generated docs
diff --git a/HEAD.json b/HEAD.json
index b99da0a..f8ffdb4 100644
--- a/HEAD.json
+++ b/HEAD.json
@@ -1 +1 @@
-{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_frombuffer","git_blob_is_binary","git_blob_dup"],"meta":{},"lines":228},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend","git_commit_create_buffer","git_commit_create_with_signature","git_commit_dup"],"meta":{},"lines":471},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":284},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_to_buf","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_from_buffer","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1401},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":145},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_version","git_index_set_version","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":805},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":578},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":537},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"proxy.h","functions":["git_proxy_init_options"],"meta":{},"lines":88},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_dup","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":741},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":820},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":771},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":291},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_from_buffer","git_signature_dup","git_signature_free"],"meta":{},"lines":99},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":641},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/merge.h","functions":["git_merge_driver_init_fn","git_merge_driver_shutdown_fn","git_merge_driver_apply_fn"],"meta":{},"lines":135},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":117},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":54},{"file":"sys/time.h","functions":["git_time_monotonic"],"meta":{},"lines":27},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":379},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel","git_tag_dup"],"meta":{},"lines":357},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk","git_tree_dup","git_tree_create_updated"],"meta":{},"lines":465},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_lookup-4"],"general.c":["ex/HEAD/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/HEAD/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/HEAD/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/HEAD/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/HEAD/general.html#git_blob_rawsize-3","ex/HEAD/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromstream":{"type":"function","file":"blob.h","line":178,"lineto":181,"args":[{"name":"out","type":"git_writestream **","comment":"the stream into which to write"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."}],"argline":"git_writestream **out, git_repository *repo, const char *hintpath","sig":"git_writestream **::git_repository *::const char *","return":{"type":"int","comment":" 0 or error code"},"description":"<p>Create a stream to write a new blob into the object db</p>\n","comments":"<p>This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use <code>git_blob_create_frombuffer()</code>. If you do not, but know the size of the contents (and don&#39;t want/need to perform filtering), use <code>git_odb_open_wstream()</code>.</p>\n\n<p>Don&#39;t close this stream yourself but pass it to <code>git_blob_create_fromstream_commit()</code> to commit the write to the object db and get the object id.</p>\n\n<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n","group":"blob"},"git_blob_create_fromstream_commit":{"type":"function","file":"blob.h","line":192,"lineto":194,"args":[{"name":"out","type":"git_oid *","comment":"the id of the new blob"},{"name":"stream","type":"git_writestream *","comment":"the stream to close"}],"argline":"git_oid *out, git_writestream *stream","sig":"git_oid *::git_writestream *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Close the stream and write the blob to the object db</p>\n","comments":"<p>The stream will be closed and freed.</p>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":205,"lineto":206,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_blob_dup":{"type":"function","file":"blob.h","line":228,"lineto":228,"args":[{"name":"out","type":"git_blob **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_blob *","comment":"Original object to copy"}],"argline":"git_blob **out, git_blob *source","sig":"git_blob **::git_blob *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a blob. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/HEAD/diff.html#git_buf_free-1"],"remote.c":["ex/HEAD/remote.html#git_buf_free-1"],"tag.c":["ex/HEAD/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/HEAD/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_lookup-5","ex/HEAD/general.html#git_commit_lookup-6","ex/HEAD/general.html#git_commit_lookup-7"],"log.c":["ex/HEAD/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_free-8","ex/HEAD/general.html#git_commit_free-9","ex/HEAD/general.html#git_commit_free-10","ex/HEAD/general.html#git_commit_free-11"],"log.c":["ex/HEAD/log.html#git_commit_free-2","ex/HEAD/log.html#git_commit_free-3","ex/HEAD/log.html#git_commit_free-4","ex/HEAD/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_id-12"],"log.c":["ex/HEAD/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/HEAD/log.html#git_commit_owner-7","ex/HEAD/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_message-3","ex/HEAD/cat-file.html#git_commit_message-4"],"general.c":["ex/HEAD/general.html#git_commit_message-13","ex/HEAD/general.html#git_commit_message-14","ex/HEAD/general.html#git_commit_message-15"],"log.c":["ex/HEAD/log.html#git_commit_message-9","ex/HEAD/log.html#git_commit_message-10"],"tag.c":["ex/HEAD/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_time-16","ex/HEAD/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_committer-5"],"general.c":["ex/HEAD/general.html#git_commit_committer-18"],"log.c":["ex/HEAD/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_author-6"],"general.c":["ex/HEAD/general.html#git_commit_author-19","ex/HEAD/general.html#git_commit_author-20"],"log.c":["ex/HEAD/log.html#git_commit_author-12","ex/HEAD/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/HEAD/log.html#git_commit_tree-14","ex/HEAD/log.html#git_commit_tree-15","ex/HEAD/log.html#git_commit_tree-16","ex/HEAD/log.html#git_commit_tree-17","ex/HEAD/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/HEAD/general.html#git_commit_parentcount-21"],"log.c":["ex/HEAD/log.html#git_commit_parentcount-19","ex/HEAD/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_parent-22"],"log.c":["ex/HEAD/log.html#git_commit_parent-21","ex/HEAD/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/HEAD/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_create_v-23"],"init.c":["ex/HEAD/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_commit_create_buffer":{"type":"function","file":"commit.h","line":432,"lineto":441,"args":[{"name":"out","type":"git_buf *","comment":"the buffer into which to write the commit object content"},{"name":"repo","type":"git_repository *","comment":"Repository where the referenced tree and parents live"},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_buf *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_buf *::git_repository *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit and write it into a buffer</p>\n","comments":"<p>Create a commit as with <code>git_commit_create()</code> but instead of writing it to the objectdb, write the contents of the object into a buffer.</p>\n","group":"commit"},"git_commit_create_with_signature":{"type":"function","file":"commit.h","line":457,"lineto":462,"args":[{"name":"out","type":"git_oid *","comment":"the resulting commit id"},{"name":"repo","type":"git_repository *","comment":null},{"name":"commit_content","type":"const char *","comment":"the content of the unsigned commit object"},{"name":"signature","type":"const char *","comment":"the signature to add to the commit"},{"name":"signature_field","type":"const char *","comment":"which header field should contain this\n signature. Leave `NULL` for the default of \"gpgsig\""}],"argline":"git_oid *out, git_repository *repo, const char *commit_content, const char *signature, const char *signature_field","sig":"git_oid *::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit object from the given buffer and signature</p>\n","comments":"<p>Given the unsigned commit object&#39;s contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.</p>\n","group":"commit"},"git_commit_dup":{"type":"function","file":"commit.h","line":471,"lineto":471,"args":[{"name":"out","type":"git_commit **","comment":"Pointer to store the copy of the commit"},{"name":"source","type":"git_commit *","comment":"Original commit to copy"}],"argline":"git_commit **out, git_commit *source","sig":"git_commit **::git_commit *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a commit. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":284,"lineto":284,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to enabled.\n\n* opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":441,"lineto":443,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":736,"lineto":738,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":752,"lineto":752,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_free-2"],"log.c":["ex/HEAD/log.html#git_diff_free-24","ex/HEAD/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":770,"lineto":775,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/HEAD/log.html#git_diff_tree_to_tree-26","ex/HEAD/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":796,"lineto":801,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":823,"lineto":827,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":852,"lineto":856,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":871,"lineto":875,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":889,"lineto":894,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":925,"lineto":927,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":945,"lineto":945,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/HEAD/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":958,"lineto":959,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":978,"lineto":979,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":987,"lineto":987,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":1015,"lineto":1021,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1034,"lineto":1034,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1059,"lineto":1063,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_print-9"],"log.c":["ex/HEAD/log.html#git_diff_print-29"]}},"git_diff_to_buf":{"type":"function","file":"diff.h","line":1075,"lineto":1078,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf that will\n            contain the diff text"},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."}],"argline":"git_buf *out, git_diff *diff, git_diff_format_t format","sig":"git_buf *::git_diff *::git_diff_format_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Produce the complete formatted text output from a diff into a\n buffer.</p>\n","comments":"","group":"diff"},"git_diff_blobs":{"type":"function","file":"diff.h","line":1115,"lineto":1125,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1152,"lineto":1163,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1186,"lineto":1198,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_from_buffer":{"type":"function","file":"diff.h","line":1219,"lineto":1222,"args":[{"name":"out","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"content","type":"const char *","comment":"The contents of a patch file"},{"name":"content_len","type":"size_t","comment":"The length of the patch file contents"}],"argline":"git_diff **out, const char *content, size_t content_len","sig":"git_diff **::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the contents of a git patch file into a <code>git_diff</code> object.</p>\n","comments":"<p>The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences.  For example, a patch file likely contains abbreviated object IDs, so the object IDs in a <code>git_diff_delta</code> produced by this function will also be abbreviated.</p>\n\n<p>This function will only read patch files created by a git implementation, it will not read unified diffs produced by the <code>diff</code> program, nor any other types of patch files.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1258,"lineto":1260,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1268,"lineto":1269,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1277,"lineto":1278,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1286,"lineto":1287,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1298,"lineto":1302,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1310,"lineto":1310,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1362,"lineto":1365,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1381,"lineto":1388,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1399,"lineto":1401,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":111,"lineto":111,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/HEAD/general.html#giterr_last-27"],"network/clone.c":["ex/HEAD/network/clone.html#giterr_last-2"],"network/git2.c":["ex/HEAD/network/git2.html#giterr_last-1","ex/HEAD/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":116,"lineto":116,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":134,"lineto":134,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":145,"lineto":145,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/HEAD/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/HEAD/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/HEAD/describe.html#git_libgit2_init-4"],"diff.c":["ex/HEAD/diff.html#git_libgit2_init-13"],"general.c":["ex/HEAD/general.html#git_libgit2_init-28"],"init.c":["ex/HEAD/init.html#git_libgit2_init-2"],"log.c":["ex/HEAD/log.html#git_libgit2_init-30"],"network/git2.c":["ex/HEAD/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/HEAD/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/HEAD/status.html#git_libgit2_init-1"],"tag.c":["ex/HEAD/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/HEAD/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/HEAD/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/HEAD/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/HEAD/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/HEAD/init.html#git_libgit2_shutdown-3"],"log.c":["ex/HEAD/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/HEAD/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/HEAD/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/HEAD/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/HEAD/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_free-29"],"init.c":["ex/HEAD/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_version":{"type":"function","file":"index.h","line":264,"lineto":264,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"unsigned int","comment":" the index version"},"description":"<p>Get index on-disk version.</p>\n","comments":"<p>Valid return values are 2, 3, or 4.  If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.</p>\n","group":"index"},"git_index_set_version":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"version","type":"unsigned int","comment":"The new version number"}],"argline":"git_index *index, unsigned int version","sig":"git_index *::unsigned int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index on-disk version.</p>\n","comments":"<p>Valid values are 2, 3, or 4.  If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":296,"lineto":296,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":305,"lineto":305,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":313,"lineto":313,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":325,"lineto":325,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":336,"lineto":336,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/HEAD/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":374,"lineto":374,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":393,"lineto":393,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":417,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":432,"lineto":433,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":453,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":482,"lineto":482,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":491,"lineto":491,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":522,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":551,"lineto":554,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":570,"lineto":570,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":617,"lineto":622,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":639,"lineto":643,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":668,"lineto":672,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":683,"lineto":683,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":694,"lineto":694,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":719,"lineto":723,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":739,"lineto":744,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":753,"lineto":753,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":761,"lineto":761,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":768,"lineto":768,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":779,"lineto":781,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":793,"lineto":797,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":804,"lineto":805,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":304,"lineto":306,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":375,"lineto":380,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":391,"lineto":395,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/HEAD/log.html#git_merge_base-32"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":406,"lineto":410,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":421,"lineto":425,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":436,"lineto":440,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":451,"lineto":455,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":473,"lineto":478,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":494,"lineto":500,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":507,"lineto":507,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":525,"lineto":531,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":548,"lineto":553,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":573,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/HEAD/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/HEAD/blame.html#git_object_id-10","ex/HEAD/blame.html#git_object_id-11","ex/HEAD/blame.html#git_object_id-12","ex/HEAD/blame.html#git_object_id-13"],"cat-file.c":["ex/HEAD/cat-file.html#git_object_id-12","ex/HEAD/cat-file.html#git_object_id-13"],"log.c":["ex/HEAD/log.html#git_object_id-34","ex/HEAD/log.html#git_object_id-35","ex/HEAD/log.html#git_object_id-36","ex/HEAD/log.html#git_object_id-37"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_object_id-4","ex/HEAD/rev-parse.html#git_object_id-5","ex/HEAD/rev-parse.html#git_object_id-6","ex/HEAD/rev-parse.html#git_object_id-7","ex/HEAD/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/HEAD/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_object_type-14","ex/HEAD/cat-file.html#git_object_type-15","ex/HEAD/cat-file.html#git_object_type-16"],"tag.c":["ex/HEAD/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/HEAD/blame.html#git_object_free-14","ex/HEAD/blame.html#git_object_free-15","ex/HEAD/blame.html#git_object_free-16","ex/HEAD/blame.html#git_object_free-17"],"cat-file.c":["ex/HEAD/cat-file.html#git_object_free-17"],"general.c":["ex/HEAD/general.html#git_object_free-32"],"log.c":["ex/HEAD/log.html#git_object_free-38"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_object_free-9","ex/HEAD/rev-parse.html#git_object_free-10","ex/HEAD/rev-parse.html#git_object_free-11"],"tag.c":["ex/HEAD/tag.html#git_object_free-7","ex/HEAD/tag.html#git_object_free-8","ex/HEAD/tag.html#git_object_free-9","ex/HEAD/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_object_type2string-18","ex/HEAD/cat-file.html#git_object_type2string-19","ex/HEAD/cat-file.html#git_object_type2string-20","ex/HEAD/cat-file.html#git_object_type2string-21"],"general.c":["ex/HEAD/general.html#git_object_type2string-33","ex/HEAD/general.html#git_object_type2string-34"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":74,"lineto":74,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":81,"lineto":81,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_read-23"],"general.c":["ex/HEAD/general.html#git_odb_read-35"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":129,"lineto":129,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":149,"lineto":149,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":160,"lineto":160,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":173,"lineto":174,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if an object can be found in the object database by an\n abbreviated object ID.</p>\n","comments":"","group":"odb"},"git_odb_expand_ids":{"type":"function","file":"odb.h","line":215,"lineto":218,"args":[{"name":"db","type":"git_odb *","comment":"The database to be searched for the given objects."},{"name":"ids","type":"git_odb_expand_id *","comment":"An array of short object IDs to search for"},{"name":"count","type":"size_t","comment":"The length of the `ids` array"}],"argline":"git_odb *db, git_odb_expand_id *ids, size_t count","sig":"git_odb *::git_odb_expand_id *::size_t","return":{"type":"int","comment":" 0 on success or an error code on failure"},"description":"<p>Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.  The given array will be\n updated in place:  for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (<code>GIT_OID_HEXSZ</code>) and type will be written back to\n the array.  For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.</p>\n","comments":"<p>Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)</p>\n","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":238,"lineto":238,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":253,"lineto":253,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":273,"lineto":273,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_write-36"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":296,"lineto":296,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":309,"lineto":309,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":324,"lineto":324,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":331,"lineto":331,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":338,"lineto":338,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":364,"lineto":364,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":384,"lineto":388,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":402,"lineto":402,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":417,"lineto":417,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":431,"lineto":431,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":441,"lineto":441,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_object_free-24"],"general.c":["ex/HEAD/general.html#git_odb_object_free-37"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":451,"lineto":451,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":464,"lineto":464,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_object_data-38"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":475,"lineto":475,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_object_size-25"],"general.c":["ex/HEAD/general.html#git_odb_object_size-39"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":483,"lineto":483,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_object_type-40"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":498,"lineto":498,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":519,"lineto":519,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":527,"lineto":527,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":537,"lineto":537,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/HEAD/general.html#git_oid_fromstr-41","ex/HEAD/general.html#git_oid_fromstr-42","ex/HEAD/general.html#git_oid_fromstr-43","ex/HEAD/general.html#git_oid_fromstr-44","ex/HEAD/general.html#git_oid_fromstr-45","ex/HEAD/general.html#git_oid_fromstr-46","ex/HEAD/general.html#git_oid_fromstr-47","ex/HEAD/general.html#git_oid_fromstr-48"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/HEAD/general.html#git_oid_fmt-49","ex/HEAD/general.html#git_oid_fmt-50","ex/HEAD/general.html#git_oid_fmt-51","ex/HEAD/general.html#git_oid_fmt-52","ex/HEAD/general.html#git_oid_fmt-53","ex/HEAD/general.html#git_oid_fmt-54"],"network/fetch.c":["ex/HEAD/network/fetch.html#git_oid_fmt-1","ex/HEAD/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_tostr-18","ex/HEAD/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/HEAD/cat-file.html#git_oid_tostr-26","ex/HEAD/cat-file.html#git_oid_tostr-27","ex/HEAD/cat-file.html#git_oid_tostr-28","ex/HEAD/cat-file.html#git_oid_tostr-29","ex/HEAD/cat-file.html#git_oid_tostr-30"],"log.c":["ex/HEAD/log.html#git_oid_tostr-39","ex/HEAD/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_oid_tostr-12","ex/HEAD/rev-parse.html#git_oid_tostr-13","ex/HEAD/rev-parse.html#git_oid_tostr-14","ex/HEAD/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_cpy-20","ex/HEAD/blame.html#git_oid_cpy-21","ex/HEAD/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/HEAD/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_proxy_init_options":{"type":"function","file":"proxy.h","line":88,"lineto":88,"args":[{"name":"opts","type":"git_proxy_options *","comment":"the options struct to initialize"},{"name":"version","type":"unsigned int","comment":"the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`"}],"argline":"git_proxy_options *opts, unsigned int version","sig":"git_proxy_options *::unsigned int","return":{"type":"int","comment":null},"description":"<p>Initialize a proxy options structure</p>\n","comments":"","group":"proxy"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_lookup-55"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_target-56"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_symbolic_target-57"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_type-58"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_list-59"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_dup":{"type":"function","file":"refs.h","line":473,"lineto":473,"args":[{"name":"dest","type":"git_reference **","comment":"pointer where to store the copy"},{"name":"source","type":"git_reference *","comment":"object to copy"}],"argline":"git_reference **dest, git_reference *source","sig":"git_reference **::git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing reference.</p>\n","comments":"<p>Call <code>git_reference_free</code> to free the data.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":480,"lineto":480,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/HEAD/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":500,"lineto":502,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":513,"lineto":516,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":525,"lineto":525,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":538,"lineto":538,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":545,"lineto":545,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":565,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":579,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":591,"lineto":591,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":601,"lineto":601,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":611,"lineto":611,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":621,"lineto":621,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":631,"lineto":631,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":687,"lineto":691,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":708,"lineto":711,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":727,"lineto":727,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":741,"lineto":741,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/HEAD/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":40,"lineto":44,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":57,"lineto":62,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":91,"lineto":91,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/HEAD/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":103,"lineto":103,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":111,"lineto":111,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":119,"lineto":119,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":130,"lineto":130,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":141,"lineto":141,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":154,"lineto":154,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":167,"lineto":167,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":180,"lineto":180,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":191,"lineto":191,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":204,"lineto":204,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":215,"lineto":215,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":223,"lineto":223,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":232,"lineto":232,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":249,"lineto":249,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"proxy_opts","type":"const git_proxy_options *","comment":"proxy settings"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":271,"lineto":271,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":282,"lineto":282,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":292,"lineto":292,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":301,"lineto":301,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":311,"lineto":311,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_free-6","ex/HEAD/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/HEAD/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":322,"lineto":322,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":473,"lineto":475,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":577,"lineto":579,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":626,"lineto":628,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":646,"lineto":646,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":660,"lineto":660,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":676,"lineto":681,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":697,"lineto":701,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":710,"lineto":710,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":722,"lineto":724,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":729,"lineto":729,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":737,"lineto":737,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":749,"lineto":749,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":756,"lineto":756,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":778,"lineto":782,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":790,"lineto":790,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":802,"lineto":802,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":820,"lineto":820,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/HEAD/general.html#git_repository_open-60"],"network/git2.c":["ex/HEAD/network/git2.html#git_repository_open-5"],"remote.c":["ex/HEAD/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/HEAD/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":141,"lineto":145,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository. May be NULL if\n        flags is GIT_REPOSITORY_OPEN_FROM_ENV."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/HEAD/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/HEAD/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/HEAD/describe.html#git_repository_open_ext-6"],"diff.c":["ex/HEAD/diff.html#git_repository_open_ext-15"],"log.c":["ex/HEAD/log.html#git_repository_open_ext-44","ex/HEAD/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/HEAD/status.html#git_repository_open_ext-5"],"tag.c":["ex/HEAD/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":158,"lineto":158,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":171,"lineto":171,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/HEAD/blame.html#git_repository_free-25"],"cat-file.c":["ex/HEAD/cat-file.html#git_repository_free-32"],"describe.c":["ex/HEAD/describe.html#git_repository_free-7"],"diff.c":["ex/HEAD/diff.html#git_repository_free-16"],"general.c":["ex/HEAD/general.html#git_repository_free-61"],"init.c":["ex/HEAD/init.html#git_repository_free-6"],"log.c":["ex/HEAD/log.html#git_repository_free-46"],"network/clone.c":["ex/HEAD/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/HEAD/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_repository_free-17"],"status.c":["ex/HEAD/status.html#git_repository_free-6"],"tag.c":["ex/HEAD/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":188,"lineto":191,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":300,"lineto":302,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":317,"lineto":320,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/HEAD/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":347,"lineto":347,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":359,"lineto":359,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_path-9"],"status.c":["ex/HEAD/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":393,"lineto":393,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":412,"lineto":413,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":421,"lineto":421,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/HEAD/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":437,"lineto":437,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":453,"lineto":453,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":469,"lineto":469,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_repository_odb-33"],"general.c":["ex/HEAD/general.html#git_repository_odb-62"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":485,"lineto":485,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":501,"lineto":501,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/HEAD/general.html#git_repository_index-63"],"init.c":["ex/HEAD/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":519,"lineto":519,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":526,"lineto":526,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":535,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":554,"lineto":557,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":574,"lineto":577,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":602,"lineto":607,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":627,"lineto":629,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":647,"lineto":649,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":663,"lineto":665,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":684,"lineto":685,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":715,"lineto":715,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":729,"lineto":729,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":746,"lineto":746,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":758,"lineto":758,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":771,"lineto":771,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/HEAD/blame.html#git_revparse_single-26"],"cat-file.c":["ex/HEAD/cat-file.html#git_revparse_single-34"],"describe.c":["ex/HEAD/describe.html#git_revparse_single-8"],"log.c":["ex/HEAD/log.html#git_revparse_single-47"],"tag.c":["ex/HEAD/tag.html#git_revparse_single-13","ex/HEAD/tag.html#git_revparse_single-14","ex/HEAD/tag.html#git_revparse_single-15","ex/HEAD/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/HEAD/blame.html#git_revparse-27"],"log.c":["ex/HEAD/log.html#git_revparse-48"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_revparse-18","ex/HEAD/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":73,"lineto":73,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_new-64"],"log.c":["ex/HEAD/log.html#git_revwalk_new-49","ex/HEAD/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":88,"lineto":88,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":107,"lineto":107,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_push-65"],"log.c":["ex/HEAD/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":125,"lineto":125,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":133,"lineto":133,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/HEAD/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":148,"lineto":148,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/HEAD/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":167,"lineto":167,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":175,"lineto":175,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":186,"lineto":186,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":197,"lineto":197,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":217,"lineto":217,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_next-66"],"log.c":["ex/HEAD/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":228,"lineto":228,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_sorting-67"],"log.c":["ex/HEAD/log.html#git_revwalk_sorting-55","ex/HEAD/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":243,"lineto":243,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":250,"lineto":250,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":258,"lineto":258,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_free-68"],"log.c":["ex/HEAD/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":267,"lineto":267,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":288,"lineto":291,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/HEAD/general.html#git_signature_new-69","ex/HEAD/general.html#git_signature_new-70"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/HEAD/init.html#git_signature_default-12"],"tag.c":["ex/HEAD/tag.html#git_signature_default-17"]}},"git_signature_from_buffer":{"type":"function","file":"signature.h","line":76,"lineto":76,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"buf","type":"const char *","comment":"signature string"}],"argline":"git_signature **out, const char *buf","sig":"git_signature **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new signature by parsing the given buffer, which is\n expected to be in the format &quot;Real Name \n&lt;email</p>\n\n<blockquote>\n<p>timestamp tzoffset&quot;,\n where <code>timestamp</code> is the number of seconds since the Unix epoch and\n <code>tzoffset</code> is the timezone offset in <code>hhmm</code> format (note the lack\n of a colon separator).</p>\n</blockquote>\n","comments":"","group":"signature"},"git_signature_dup":{"type":"function","file":"signature.h","line":88,"lineto":88,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":99,"lineto":99,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/HEAD/init.html#git_signature_free-13"],"tag.c":["ex/HEAD/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_new-12","ex/HEAD/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_entrycount-14","ex/HEAD/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_byindex-16","ex/HEAD/status.html#git_status_byindex-17","ex/HEAD/status.html#git_status_byindex-18","ex/HEAD/status.html#git_status_byindex-19","ex/HEAD/status.html#git_status_byindex-20","ex/HEAD/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/HEAD/general.html#git_strarray_free-71"],"remote.c":["ex/HEAD/remote.html#git_strarray_free-16","ex/HEAD/remote.html#git_strarray_free-17"],"tag.c":["ex/HEAD/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":179,"lineto":180,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":200,"lineto":200,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn&#39;t contain\n the target commit (e.g. because fetchRecurseSubmodules isn&#39;t set), then\n the submodule is fetched using the fetch options supplied in options.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":229,"lineto":232,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":239,"lineto":239,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":259,"lineto":262,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":289,"lineto":294,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":306,"lineto":306,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":318,"lineto":320,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":360,"lineto":360,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":378,"lineto":378,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":391,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":421,"lineto":421,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":434,"lineto":434,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":459,"lineto":460,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":472,"lineto":475,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":487,"lineto":488,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":500,"lineto":503,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":516,"lineto":517,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":529,"lineto":532,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":547,"lineto":547,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":562,"lineto":565,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":575,"lineto":575,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":589,"lineto":591,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":603,"lineto":603,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":619,"lineto":623,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":639,"lineto":641,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":115,"lineto":117,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":54,"lineto":54,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_time_monotonic":{"type":"function","file":"sys/time.h","line":27,"lineto":27,"args":[],"argline":"","sig":"","return":{"type":"double","comment":null},"description":"<p>Return a monotonic time value, useful for measuring running time\n and setting up timeouts.</p>\n","comments":"<p>The returned value is an arbitrary point in time -- it can only be used when comparing it to another <code>git_time_monotonic</code> call.</p>\n\n<p>The time is returned in seconds, with a decimal fraction that differs on accuracy based on the underlying system, but should be least accurate to Nanoseconds.</p>\n\n<p>This function cannot fail.</p>\n","group":"time"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":119,"lineto":121,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":177,"lineto":178,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":191,"lineto":194,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":204,"lineto":207,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":217,"lineto":220,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":231,"lineto":231,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":352,"lineto":355,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":364,"lineto":367,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":376,"lineto":379,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/HEAD/general.html#git_tag_lookup-72"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/HEAD/general.html#git_tag_target-73"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_target_type-36"],"general.c":["ex/HEAD/general.html#git_tag_target_type-74"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_name-37"],"general.c":["ex/HEAD/general.html#git_tag_name-75"],"tag.c":["ex/HEAD/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_message-39","ex/HEAD/cat-file.html#git_tag_message-40"],"general.c":["ex/HEAD/general.html#git_tag_message-76"],"tag.c":["ex/HEAD/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_tag_dup":{"type":"function","file":"tag.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_tag **","comment":"Pointer to store the copy of the tag"},{"name":"source","type":"git_tag *","comment":"Original tag to copy"}],"argline":"git_tag **out, git_tag *source","sig":"git_tag **::git_tag *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tag. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_lookup-77","ex/HEAD/general.html#git_tree_lookup-78"],"init.c":["ex/HEAD/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/HEAD/diff.html#git_tree_free-17","ex/HEAD/diff.html#git_tree_free-18"],"init.c":["ex/HEAD/init.html#git_tree_free-15"],"log.c":["ex/HEAD/log.html#git_tree_free-58","ex/HEAD/log.html#git_tree_free-59","ex/HEAD/log.html#git_tree_free-60","ex/HEAD/log.html#git_tree_free-61","ex/HEAD/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/HEAD/general.html#git_tree_entrycount-79"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_entry_byname-80"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/HEAD/general.html#git_tree_entry_byindex-81"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/HEAD/general.html#git_tree_entry_name-82","ex/HEAD/general.html#git_tree_entry_name-83"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_entry_to_object-84"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"},"git_tree_dup":{"type":"function","file":"tree.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to store the copy of the tree"},{"name":"source","type":"git_tree *","comment":"Original tree to copy"}],"argline":"git_tree **out, git_tree *source","sig":"git_tree **::git_tree *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tree. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tree"},"git_tree_create_updated":{"type":"function","file":"tree.h","line":465,"lineto":465,"args":[{"name":"out","type":"git_oid *","comment":"id of the new tree"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the tree, must be the\n same as for `baseline`"},{"name":"baseline","type":"git_tree *","comment":"the tree to base these changes on"},{"name":"nupdates","type":"size_t","comment":"the number of elements in the update list"},{"name":"updates","type":"const git_tree_update *","comment":"the list of updates to perform"}],"argline":"git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates","sig":"git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *","return":{"type":"int","comment":null},"description":"<p>Create a tree based on another one with the specified modifications</p>\n","comments":"<p>Given the <code>baseline</code> perform the changes described in the list of <code>updates</code> and create a new tree.</p>\n\n<p>This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a <code>git_index</code> and modifying that, but in exchange it is not as flexible.</p>\n\n<p>Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":353,"lineto":357,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":369,"lineto":373,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":452,"lineto":455,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":509,"lineto":512,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":529,"lineto":532,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":582,"lineto":586,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":27,"lineto":27,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"uint32_t","comment":null},{"name":"total","type":"uint32_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, uint32_t current, uint32_t total, void *payload","sig":"int::uint32_t::uint32_t::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":29,"lineto":29,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":335,"lineto":339,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":368,"lineto":368,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":277,"lineto":279,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_merge_driver_init_fn":{"type":"callback","file":"sys/merge.h","line":71,"lineto":71,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.initialize</code>, this is an optional callback invoked before a merge driver is first used.  It will be called once at most per library lifetime.</p>\n\n<p>If non-NULL, the merge driver&#39;s <code>initialize</code> callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the merge driver).</p>\n"},"git_merge_driver_shutdown_fn":{"type":"callback","file":"sys/merge.h","line":83,"lineto":83,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.shutdown</code>, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_merge_driver</code> object itself.</p>\n"},"git_merge_driver_apply_fn":{"type":"callback","file":"sys/merge.h","line":103,"lineto":109,"args":[{"name":"self","type":"int *","comment":null},{"name":"path_out","type":"const char **","comment":null},{"name":"mode_out","type":"int *","comment":null},{"name":"merged_out","type":"int *","comment":null},{"name":"filter_name","type":"const char *","comment":null},{"name":"src","type":"const git_merge_driver_source *","comment":null}],"argline":"int *self, const char **path_out, int *mode_out, int *merged_out, const char *filter_name, const git_merge_driver_source *src","sig":"int *::const char **::int *::int *::const char *::const git_merge_driver_source *","return":{"type":"int","comment":null},"description":"<p>Callback to perform the merge.</p>\n","comments":"<p>Specified as <code>driver.apply</code>, this is the callback that actually does the merge.  If it can successfully perform a merge, it should populate <code>path_out</code> with a pointer to the filename to accept, <code>mode_out</code> with the resultant mode, and <code>merged_out</code> with the buffer of the merged file and then return 0.  If the driver returns <code>GIT_PASSTHROUGH</code>, then the default merge driver should instead be run.  It can also return <code>GIT_EMERGECONFLICT</code> if the driver is not able to produce a merge result, and the file will remain conflicted.  Any other errors will fail and return to the caller.</p>\n\n<p>The <code>filter_name</code> contains the name of the filter that was invoked, as specified by the file&#39;s attributes.</p>\n\n<p>The <code>src</code> contains the data about the file to be merged.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_create_buffer","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_diff_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_dup","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["unsigned int contains_data","git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":492,"lineto":503,"block":"unsigned int contains_data\ngit_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"unsigned int","name":"contains_data","comments":" Whether there is data in this binary structure or not.  If this\n is `1`, then this was produced and included binary content.  If\n this is `0` then this was generated knowing only that a binary\n file changed but without providing the data, probably from a patch\n that said `Binary files a/file.txt and b/file.txt differ`."},{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":477,"lineto":489,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":465,"lineto":474,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":331,"lineto":338,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode","uint16_t id_abbrev"],"type":"struct","value":"git_diff_file","file":"diff.h","line":286,"lineto":293,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>id</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n\n<p>The <code>id_abbrev</code> represents the known length of the <code>id</code> field, when converted to a hex string.  It is generally <code>GIT_OID_HEXSZ</code>, unless this delta was created from reading a patch file, in which case it may be abbreviated to something reasonable, like 7 characters.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""},{"type":"uint16_t","name":"id_abbrev","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":697,"lineto":723,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":591,"lineto":660,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1315,"lineto":1322,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1327,"lineto":1349,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1039,"lineto":1045,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print","git_diff_to_buf"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":517,"lineto":524,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":""},{"type":"int","name":"old_lines","comments":" Starting line number in old_file "},{"type":"int","name":"new_start","comments":" Number of lines in old_file "},{"type":"int","name":"new_lines","comments":" Starting line number in new_file "},{"type":"size_t","name":"header_len","comments":" Number of lines in new_file "},{"type":"char [128]","name":"header","comments":" Number of bytes in header text "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":564,"lineto":572,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":543,"lineto":559,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":402,"lineto":422,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":665,"lineto":675,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1229,"lineto":1229,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1234,"lineto":1249,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM","GITERR_PATCH"],"type":"enum","file":"errors.h","line":70,"lineto":103,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM\nGITERR_PATCH","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30},{"type":"int","name":"GITERR_PATCH","comments":"","value":31}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":525,"lineto":562,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS","GIT_OPT_GET_USER_AGENT"],"type":"enum","file":"common.h","line":144,"lineto":162,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15},{"type":"int","name":"GIT_OPT_GET_USER_AGENT","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":311,"lineto":340,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_driver",{"decl":["unsigned int version","git_merge_driver_init_fn initialize","git_merge_driver_shutdown_fn shutdown","git_merge_driver_apply_fn apply"],"type":"struct","value":"git_merge_driver","file":"sys/merge.h","line":118,"lineto":135,"block":"unsigned int version\ngit_merge_driver_init_fn initialize\ngit_merge_driver_shutdown_fn shutdown\ngit_merge_driver_apply_fn apply","tdef":null,"description":" Merge driver structure used to register custom merge drivers.","comments":"<p>To associate extra data with a driver, allocate extra data and put the <code>git_merge_driver</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":" The `version` should be set to `GIT_MERGE_DRIVER_VERSION`. "},{"type":"git_merge_driver_init_fn","name":"initialize","comments":" Called when the merge driver is first used for any file. "},{"type":"git_merge_driver_shutdown_fn","name":"shutdown","comments":" Called when the merge driver is unregistered from the system. "},{"type":"git_merge_driver_apply_fn","name":"apply","comments":" Called to merge the contents of a conflict.  If this function\n returns `GIT_PASSTHROUGH` then the default (`text`) merge driver\n will instead be invoked.  If this function returns\n `GIT_EMERGECONFLICT` then the file will remain conflicted."}],"used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_driver_source",{"decl":"git_merge_driver_source","type":"struct","value":"git_merge_driver_source","file":"sys/merge.h","line":36,"lineto":36,"tdef":"typedef","description":" A merge driver source represents the file to be merged","comments":"","used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","const char * default_driver","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":290,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"const char *","name":"default_driver","comments":" Default merge driver to be used when both sides of a merge have\n changed.  The default is the `text` driver."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver."},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":345,"lineto":363,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nint (*)(git_odb_backend *, const git_oid *) freshen\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"freshen","comments":" \"Freshens\" an already existing object, updating its last-used\n time.  This occurs when `git_odb_write` was called, but the\n object already existed (and will not be re-written).  The\n underlying implementation may want to update last-used timestamps.\n\n If callers implement this, they should return `0` if the object\n exists and was freshened, and non-zero otherwise."},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_expand_id",{"decl":["git_oid id","unsigned short length","git_otype type"],"type":"struct","value":"git_odb_expand_id","file":"odb.h","line":180,"lineto":195,"block":"git_oid id\nunsigned short length\ngit_otype type","tdef":"typedef","description":" The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.","comments":"","fields":[{"type":"git_oid","name":"id","comments":" The object ID to expand "},{"type":"unsigned short","name":"length","comments":" The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)"},{"type":"git_otype","name":"type","comments":" The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID."}],"used":{"returns":[],"needs":["git_odb_expand_ids"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_proxy_options",{"decl":["unsigned int version","git_proxy_t type","const char * url","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","void * payload"],"type":"struct","value":"git_proxy_options","file":"proxy.h","line":42,"lineto":77,"block":"unsigned int version\ngit_proxy_t type\nconst char * url\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\nvoid * payload","tdef":"typedef","description":" Options for connecting through a proxy","comments":"<p>Note that not all types may be supported, depending on the platform and compilation options.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_proxy_t","name":"type","comments":" The type of proxy to use, by URL, auto-detect."},{"type":"const char *","name":"url","comments":" The URL of the proxy."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"void *","name":"payload","comments":" Payload to be provided to the credentials and certificate\n check callbacks."}],"used":{"returns":[],"needs":["git_proxy_init_options","git_remote_connect"]}}],["git_proxy_t",{"decl":["GIT_PROXY_NONE","GIT_PROXY_AUTO","GIT_PROXY_SPECIFIED"],"type":"enum","file":"proxy.h","line":18,"lineto":34,"block":"GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED","tdef":"typedef","description":" The type of proxy to use.","comments":"","fields":[{"type":"int","name":"GIT_PROXY_NONE","comments":"<p>Do not attempt to connect through a proxy</p>\n\n<p>If built against lbicurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.</p>\n","value":0},{"type":"int","name":"GIT_PROXY_AUTO","comments":"<p>Try to auto-detect the proxy from the git configuration.</p>\n","value":1},{"type":"int","name":"GIT_PROXY_SPECIFIED","comments":"<p>Connect via the URL given in the options</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":585,"lineto":612,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":343,"lineto":360,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":636,"lineto":665,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":497,"lineto":515,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":376,"lineto":460,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":328,"lineto":332,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":221,"lineto":229,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":244,"lineto":248,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":278,"lineto":287,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE","GIT_REPOSITORY_OPEN_NO_DOTGIT","GIT_REPOSITORY_OPEN_FROM_ENV"],"type":"enum","file":"repository.h","line":115,"lineto":121,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE\nGIT_REPOSITORY_OPEN_NO_DOTGIT\nGIT_REPOSITORY_OPEN_FROM_ENV","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks. * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by   appending /.git to the start_path; only open the repository if   start_path itself points to the git directory. * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,   respecting the environment variables used by the git command-line   tools. If set, <code>git_repository_open_ext</code> will ignore the other   flags and the <code>ceiling_dirs</code> argument, and will allow a NULL <code>path</code>   to use <code>GIT_DIR</code> or search from the current directory. The search   for a repository will respect $GIT_CEILING_DIRECTORIES and   $GIT_DISCOVERY_ACROSS_FILESYSTEM.  The opened repository will   respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and   $GIT_ALTERNATE_OBJECT_DIRECTORIES.  In the future, this flag will   also cause <code>git_repository_open_ext</code> to respect $GIT_WORK_TREE and   $GIT_COMMON_DIR; currently, <code>git_repository_open_ext</code> with this   flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is   set.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_DOTGIT","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_OPEN_FROM_ENV","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":693,"lineto":706,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":326,"lineto":339,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":53,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the output with the same default time-order method from git.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order (parents before\n children); this sorting mode can be combined with time sorting to\n produce git&#39;s &quot;time-order&quot;.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const int *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":29,"lineto":41,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const int *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy","int allow_fetch"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":163,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy\nint allow_fetch","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."},{"type":"int","name":"allow_fetch","comments":" Allow fetching from the submodule's default remote if the target\n commit isn't found. Enabled by default."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":31,"lineto":33,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_tree_update",{"decl":["git_tree_update_t action","git_oid id","git_filemode_t filemode","const char * path"],"type":"struct","value":"git_tree_update","file":"tree.h","line":434,"lineto":443,"block":"git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path","tdef":"typedef","description":" An action to perform during the update of a tree","comments":"","fields":[{"type":"git_tree_update_t","name":"action","comments":" Update action. If it's an removal, only the path is looked at "},{"type":"git_oid","name":"id","comments":" The entry's id "},{"type":"git_filemode_t","name":"filemode","comments":" The filemode/kind of object "},{"type":"const char *","name":"path","comments":" The full path from the root tree "}],"used":{"returns":[],"needs":["git_tree_create_updated"]}}],["git_tree_update_t",{"decl":["GIT_TREE_UPDATE_UPSERT","GIT_TREE_UPDATE_REMOVE"],"type":"enum","file":"tree.h","line":424,"lineto":429,"block":"GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE","tdef":"typedef","description":" The kind of update to perform","comments":"","fields":[{"type":"int","name":"GIT_TREE_UPDATE_UPSERT","comments":"<p>Update or insert an entry at the specified path </p>\n","value":0},{"type":"int","name":"GIT_TREE_UPDATE_REMOVE","comments":"<p>Remove an entry from the specified path </p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromstream","git_blob_create_fromstream_commit","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_dup","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["proxy",["git_proxy_init_options"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["time",["git_time_monotonic"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/HEAD/add.html"],["blame.c","ex/HEAD/blame.html"],["cat-file.c","ex/HEAD/cat-file.html"],["common.c","ex/HEAD/common.html"],["describe.c","ex/HEAD/describe.html"],["diff.c","ex/HEAD/diff.html"],["for-each-ref.c","ex/HEAD/for-each-ref.html"],["general.c","ex/HEAD/general.html"],["init.c","ex/HEAD/init.html"],["log.c","ex/HEAD/log.html"],["network/clone.c","ex/HEAD/network/clone.html"],["network/common.c","ex/HEAD/network/common.html"],["network/fetch.c","ex/HEAD/network/fetch.html"],["network/git2.c","ex/HEAD/network/git2.html"],["network/index-pack.c","ex/HEAD/network/index-pack.html"],["network/ls-remote.c","ex/HEAD/network/ls-remote.html"],["remote.c","ex/HEAD/remote.html"],["rev-list.c","ex/HEAD/rev-list.html"],["rev-parse.c","ex/HEAD/rev-parse.html"],["showindex.c","ex/HEAD/showindex.html"],["status.c","ex/HEAD/status.html"],["tag.c","ex/HEAD/tag.html"]]}
\ No newline at end of file
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_frombuffer","git_blob_is_binary","git_blob_dup"],"meta":{},"lines":228},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend","git_commit_create_buffer","git_commit_create_with_signature","git_commit_dup"],"meta":{},"lines":471},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":312},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":161},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_to_buf","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_from_buffer","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1401},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":145},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_version","git_index_set_version","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":805},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":579},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":537},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":264},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"proxy.h","functions":["git_proxy_init_options"],"meta":{},"lines":88},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_dup","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":741},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":820},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":771},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":291},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_from_buffer","git_signature_dup","git_signature_free"],"meta":{},"lines":99},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":632},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/merge.h","functions":["git_merge_driver_init_fn","git_merge_driver_shutdown_fn","git_merge_driver_apply_fn"],"meta":{},"lines":135},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":117},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare","git_repository_submodule_cache_all","git_repository_submodule_cache_clear"],"meta":{},"lines":165},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":54},{"file":"sys/time.h","functions":["git_time_monotonic"],"meta":{},"lines":27},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":379},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel","git_tag_dup"],"meta":{},"lines":357},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treebuilder_write_with_buffer","git_treewalk_cb","git_tree_walk","git_tree_dup","git_tree_create_updated"],"meta":{},"lines":478},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/HEAD/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_lookup-4"],"general.c":["ex/HEAD/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_free-5"],"general.c":["ex/HEAD/general.html#git_blob_free-2"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/HEAD/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/HEAD/general.html#git_blob_rawcontent-3"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/HEAD/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/HEAD/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/HEAD/general.html#git_blob_rawsize-4","ex/HEAD/general.html#git_blob_rawsize-5"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromstream":{"type":"function","file":"blob.h","line":178,"lineto":181,"args":[{"name":"out","type":"git_writestream **","comment":"the stream into which to write"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."}],"argline":"git_writestream **out, git_repository *repo, const char *hintpath","sig":"git_writestream **::git_repository *::const char *","return":{"type":"int","comment":" 0 or error code"},"description":"<p>Create a stream to write a new blob into the object db</p>\n","comments":"<p>This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use <code>git_blob_create_frombuffer()</code>. If you do not, but know the size of the contents (and don&#39;t want/need to perform filtering), use <code>git_odb_open_wstream()</code>.</p>\n\n<p>Don&#39;t close this stream yourself but pass it to <code>git_blob_create_fromstream_commit()</code> to commit the write to the object db and get the object id.</p>\n\n<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n","group":"blob"},"git_blob_create_fromstream_commit":{"type":"function","file":"blob.h","line":192,"lineto":194,"args":[{"name":"out","type":"git_oid *","comment":"the id of the new blob"},{"name":"stream","type":"git_writestream *","comment":"the stream to close"}],"argline":"git_oid *out, git_writestream *stream","sig":"git_oid *::git_writestream *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Close the stream and write the blob to the object db</p>\n","comments":"<p>The stream will be closed and freed.</p>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":205,"lineto":206,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_blob_dup":{"type":"function","file":"blob.h","line":228,"lineto":228,"args":[{"name":"out","type":"git_blob **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_blob *","comment":"Original object to copy"}],"argline":"git_blob **out, git_blob *source","sig":"git_blob **::git_blob *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a blob. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/HEAD/diff.html#git_buf_free-1"],"remote.c":["ex/HEAD/remote.html#git_buf_free-1"],"tag.c":["ex/HEAD/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/HEAD/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_lookup-6","ex/HEAD/general.html#git_commit_lookup-7","ex/HEAD/general.html#git_commit_lookup-8"],"log.c":["ex/HEAD/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_free-9","ex/HEAD/general.html#git_commit_free-10","ex/HEAD/general.html#git_commit_free-11","ex/HEAD/general.html#git_commit_free-12","ex/HEAD/general.html#git_commit_free-13"],"log.c":["ex/HEAD/log.html#git_commit_free-2","ex/HEAD/log.html#git_commit_free-3","ex/HEAD/log.html#git_commit_free-4","ex/HEAD/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_id-14"],"log.c":["ex/HEAD/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/HEAD/log.html#git_commit_owner-7","ex/HEAD/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_message-3","ex/HEAD/cat-file.html#git_commit_message-4"],"general.c":["ex/HEAD/general.html#git_commit_message-15","ex/HEAD/general.html#git_commit_message-16","ex/HEAD/general.html#git_commit_message-17"],"log.c":["ex/HEAD/log.html#git_commit_message-9","ex/HEAD/log.html#git_commit_message-10"],"tag.c":["ex/HEAD/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_time-18","ex/HEAD/general.html#git_commit_time-19"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_committer-5"],"general.c":["ex/HEAD/general.html#git_commit_committer-20"],"log.c":["ex/HEAD/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_author-6"],"general.c":["ex/HEAD/general.html#git_commit_author-21","ex/HEAD/general.html#git_commit_author-22"],"log.c":["ex/HEAD/log.html#git_commit_author-12","ex/HEAD/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/HEAD/log.html#git_commit_tree-14","ex/HEAD/log.html#git_commit_tree-15","ex/HEAD/log.html#git_commit_tree-16","ex/HEAD/log.html#git_commit_tree-17","ex/HEAD/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/HEAD/general.html#git_commit_parentcount-23"],"log.c":["ex/HEAD/log.html#git_commit_parentcount-19","ex/HEAD/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_parent-24"],"log.c":["ex/HEAD/log.html#git_commit_parent-21","ex/HEAD/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/HEAD/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/HEAD/general.html#git_commit_create_v-25"],"init.c":["ex/HEAD/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_commit_create_buffer":{"type":"function","file":"commit.h","line":432,"lineto":441,"args":[{"name":"out","type":"git_buf *","comment":"the buffer into which to write the commit object content"},{"name":"repo","type":"git_repository *","comment":"Repository where the referenced tree and parents live"},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_buf *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_buf *::git_repository *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit and write it into a buffer</p>\n","comments":"<p>Create a commit as with <code>git_commit_create()</code> but instead of writing it to the objectdb, write the contents of the object into a buffer.</p>\n","group":"commit"},"git_commit_create_with_signature":{"type":"function","file":"commit.h","line":457,"lineto":462,"args":[{"name":"out","type":"git_oid *","comment":"the resulting commit id"},{"name":"repo","type":"git_repository *","comment":null},{"name":"commit_content","type":"const char *","comment":"the content of the unsigned commit object"},{"name":"signature","type":"const char *","comment":"the signature to add to the commit"},{"name":"signature_field","type":"const char *","comment":"which header field should contain this\n signature. Leave `NULL` for the default of \"gpgsig\""}],"argline":"git_oid *out, git_repository *repo, const char *commit_content, const char *signature, const char *signature_field","sig":"git_oid *::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit object from the given buffer and signature</p>\n","comments":"<p>Given the unsigned commit object&#39;s contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.</p>\n","group":"commit"},"git_commit_dup":{"type":"function","file":"commit.h","line":471,"lineto":471,"args":[{"name":"out","type":"git_commit **","comment":"Pointer to store the copy of the commit"},{"name":"source","type":"git_commit *","comment":"Original commit to copy"}],"argline":"git_commit **out, git_commit *source","sig":"git_commit **::git_commit *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a commit. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":154,"lineto":154,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":312,"lineto":312,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to enabled.\n\n* opts(GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION, int enabled)\n\n    &gt; Validate the target of a symbolic ref when creating it.  For      &gt; example, `foobar` is not a valid ref, therefore `foobar` is       &gt; not a valid target for a symbolic ref by default, whereas     &gt; `refs/heads/foobar` is.  Disabling this bypasses validation       &gt; so that an arbitrary strings such as `foobar` can be used     &gt; for a symbolic ref target.  This defaults to enabled.\n\n* opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_open_ondisk-26"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_free-27","ex/HEAD/general.html#git_config_free-28"]}},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_get_int32-29"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/HEAD/general.html#git_config_get_string-30"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":123,"lineto":126,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":140,"lineto":143,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":153,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/HEAD/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":161,"lineto":161,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":441,"lineto":443,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":736,"lineto":738,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":752,"lineto":752,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_free-2"],"log.c":["ex/HEAD/log.html#git_diff_free-24","ex/HEAD/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":770,"lineto":775,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/HEAD/log.html#git_diff_tree_to_tree-26","ex/HEAD/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":796,"lineto":801,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":823,"lineto":827,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":852,"lineto":856,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":871,"lineto":875,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":889,"lineto":894,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":925,"lineto":927,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":945,"lineto":945,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/HEAD/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":958,"lineto":959,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":978,"lineto":979,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":987,"lineto":987,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":1015,"lineto":1021,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1034,"lineto":1034,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1059,"lineto":1063,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_print-9"],"log.c":["ex/HEAD/log.html#git_diff_print-29"]}},"git_diff_to_buf":{"type":"function","file":"diff.h","line":1075,"lineto":1078,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf that will\n            contain the diff text"},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."}],"argline":"git_buf *out, git_diff *diff, git_diff_format_t format","sig":"git_buf *::git_diff *::git_diff_format_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Produce the complete formatted text output from a diff into a\n buffer.</p>\n","comments":"","group":"diff"},"git_diff_blobs":{"type":"function","file":"diff.h","line":1115,"lineto":1125,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1152,"lineto":1163,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1186,"lineto":1198,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_from_buffer":{"type":"function","file":"diff.h","line":1219,"lineto":1222,"args":[{"name":"out","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"content","type":"const char *","comment":"The contents of a patch file"},{"name":"content_len","type":"size_t","comment":"The length of the patch file contents"}],"argline":"git_diff **out, const char *content, size_t content_len","sig":"git_diff **::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the contents of a git patch file into a <code>git_diff</code> object.</p>\n","comments":"<p>The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences.  For example, a patch file likely contains abbreviated object IDs, so the object IDs in a <code>git_diff_delta</code> produced by this function will also be abbreviated.</p>\n\n<p>This function will only read patch files created by a git implementation, it will not read unified diffs produced by the <code>diff</code> program, nor any other types of patch files.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1258,"lineto":1260,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1268,"lineto":1269,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1277,"lineto":1278,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1286,"lineto":1287,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1298,"lineto":1302,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1310,"lineto":1310,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/HEAD/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1362,"lineto":1365,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1381,"lineto":1388,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1399,"lineto":1401,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":111,"lineto":111,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/HEAD/general.html#giterr_last-31"],"network/clone.c":["ex/HEAD/network/clone.html#giterr_last-2"],"network/git2.c":["ex/HEAD/network/git2.html#giterr_last-1","ex/HEAD/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":116,"lineto":116,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":134,"lineto":134,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":145,"lineto":145,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/HEAD/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/HEAD/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/HEAD/describe.html#git_libgit2_init-4"],"diff.c":["ex/HEAD/diff.html#git_libgit2_init-13"],"general.c":["ex/HEAD/general.html#git_libgit2_init-32"],"init.c":["ex/HEAD/init.html#git_libgit2_init-2"],"log.c":["ex/HEAD/log.html#git_libgit2_init-30"],"network/git2.c":["ex/HEAD/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/HEAD/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/HEAD/status.html#git_libgit2_init-1"],"tag.c":["ex/HEAD/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/HEAD/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/HEAD/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/HEAD/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/HEAD/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/HEAD/init.html#git_libgit2_shutdown-3"],"log.c":["ex/HEAD/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/HEAD/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/HEAD/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/HEAD/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/HEAD/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_free-33"],"init.c":["ex/HEAD/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_version":{"type":"function","file":"index.h","line":264,"lineto":264,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"unsigned int","comment":" the index version"},"description":"<p>Get index on-disk version.</p>\n","comments":"<p>Valid return values are 2, 3, or 4.  If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.</p>\n","group":"index"},"git_index_set_version":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"version","type":"unsigned int","comment":"The new version number"}],"argline":"git_index *index, unsigned int version","sig":"git_index *::unsigned int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index on-disk version.</p>\n","comments":"<p>Valid values are 2, 3, or 4.  If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":296,"lineto":296,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":305,"lineto":305,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":313,"lineto":313,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":325,"lineto":325,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":336,"lineto":336,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/HEAD/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":374,"lineto":374,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":393,"lineto":393,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_entrycount-34"]}},"git_index_clear":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":417,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/HEAD/general.html#git_index_get_byindex-35"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":432,"lineto":433,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":453,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":482,"lineto":482,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":491,"lineto":491,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":522,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":551,"lineto":554,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":570,"lineto":570,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":617,"lineto":622,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":639,"lineto":643,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":668,"lineto":672,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":683,"lineto":683,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":694,"lineto":694,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":719,"lineto":723,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":739,"lineto":744,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":753,"lineto":753,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":761,"lineto":761,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":768,"lineto":768,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":779,"lineto":781,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":793,"lineto":797,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":804,"lineto":805,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":305,"lineto":307,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":376,"lineto":381,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":392,"lineto":396,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/HEAD/log.html#git_merge_base-32"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":407,"lineto":411,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":422,"lineto":426,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":437,"lineto":441,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":452,"lineto":456,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":474,"lineto":479,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":495,"lineto":501,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":508,"lineto":508,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":526,"lineto":532,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":549,"lineto":554,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":574,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/HEAD/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/HEAD/blame.html#git_object_id-10","ex/HEAD/blame.html#git_object_id-11","ex/HEAD/blame.html#git_object_id-12","ex/HEAD/blame.html#git_object_id-13"],"cat-file.c":["ex/HEAD/cat-file.html#git_object_id-12","ex/HEAD/cat-file.html#git_object_id-13"],"log.c":["ex/HEAD/log.html#git_object_id-34","ex/HEAD/log.html#git_object_id-35","ex/HEAD/log.html#git_object_id-36","ex/HEAD/log.html#git_object_id-37"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_object_id-4","ex/HEAD/rev-parse.html#git_object_id-5","ex/HEAD/rev-parse.html#git_object_id-6","ex/HEAD/rev-parse.html#git_object_id-7","ex/HEAD/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/HEAD/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_object_type-14","ex/HEAD/cat-file.html#git_object_type-15","ex/HEAD/cat-file.html#git_object_type-16"],"tag.c":["ex/HEAD/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/HEAD/blame.html#git_object_free-14","ex/HEAD/blame.html#git_object_free-15","ex/HEAD/blame.html#git_object_free-16","ex/HEAD/blame.html#git_object_free-17"],"cat-file.c":["ex/HEAD/cat-file.html#git_object_free-17"],"general.c":["ex/HEAD/general.html#git_object_free-36"],"log.c":["ex/HEAD/log.html#git_object_free-38"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_object_free-9","ex/HEAD/rev-parse.html#git_object_free-10","ex/HEAD/rev-parse.html#git_object_free-11"],"tag.c":["ex/HEAD/tag.html#git_object_free-7","ex/HEAD/tag.html#git_object_free-8","ex/HEAD/tag.html#git_object_free-9","ex/HEAD/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_object_type2string-18","ex/HEAD/cat-file.html#git_object_type2string-19","ex/HEAD/cat-file.html#git_object_type2string-20","ex/HEAD/cat-file.html#git_object_type2string-21"],"general.c":["ex/HEAD/general.html#git_object_type2string-37","ex/HEAD/general.html#git_object_type2string-38"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":74,"lineto":74,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":81,"lineto":81,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_free-22"],"general.c":["ex/HEAD/general.html#git_odb_free-39"]}},"git_odb_read":{"type":"function","file":"odb.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_read-23"],"general.c":["ex/HEAD/general.html#git_odb_read-40"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":129,"lineto":129,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":149,"lineto":149,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":160,"lineto":160,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":173,"lineto":174,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if an object can be found in the object database by an\n abbreviated object ID.</p>\n","comments":"","group":"odb"},"git_odb_expand_ids":{"type":"function","file":"odb.h","line":215,"lineto":218,"args":[{"name":"db","type":"git_odb *","comment":"The database to be searched for the given objects."},{"name":"ids","type":"git_odb_expand_id *","comment":"An array of short object IDs to search for"},{"name":"count","type":"size_t","comment":"The length of the `ids` array"}],"argline":"git_odb *db, git_odb_expand_id *ids, size_t count","sig":"git_odb *::git_odb_expand_id *::size_t","return":{"type":"int","comment":" 0 on success or an error code on failure"},"description":"<p>Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.  The given array will be\n updated in place:  for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (<code>GIT_OID_HEXSZ</code>) and type will be written back to\n the array.  For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.</p>\n","comments":"<p>Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)</p>\n","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":238,"lineto":238,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":253,"lineto":253,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":273,"lineto":273,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_write-41"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":296,"lineto":296,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":309,"lineto":309,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":324,"lineto":324,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":331,"lineto":331,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":338,"lineto":338,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":364,"lineto":364,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":384,"lineto":388,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":402,"lineto":402,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":417,"lineto":417,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":431,"lineto":431,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":441,"lineto":441,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_object_free-24"],"general.c":["ex/HEAD/general.html#git_odb_object_free-42"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":451,"lineto":451,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":464,"lineto":464,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_object_data-43"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":475,"lineto":475,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_odb_object_size-25"],"general.c":["ex/HEAD/general.html#git_odb_object_size-44"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":483,"lineto":483,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/HEAD/general.html#git_odb_object_type-45"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":498,"lineto":498,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":519,"lineto":519,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":527,"lineto":527,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":537,"lineto":537,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/HEAD/general.html#git_oid_fromstr-46","ex/HEAD/general.html#git_oid_fromstr-47","ex/HEAD/general.html#git_oid_fromstr-48","ex/HEAD/general.html#git_oid_fromstr-49","ex/HEAD/general.html#git_oid_fromstr-50","ex/HEAD/general.html#git_oid_fromstr-51","ex/HEAD/general.html#git_oid_fromstr-52","ex/HEAD/general.html#git_oid_fromstr-53"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":69,"lineto":69,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid.</p>\n","comments":"<p>If N is odd, the last byte&#39;s high nibble will be read in and the low nibble set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":77,"lineto":77,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":89,"lineto":89,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/HEAD/general.html#git_oid_fmt-54","ex/HEAD/general.html#git_oid_fmt-55","ex/HEAD/general.html#git_oid_fmt-56","ex/HEAD/general.html#git_oid_fmt-57","ex/HEAD/general.html#git_oid_fmt-58","ex/HEAD/general.html#git_oid_fmt-59"],"network/fetch.c":["ex/HEAD/network/fetch.html#git_oid_fmt-1","ex/HEAD/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/HEAD/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":100,"lineto":100,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":115,"lineto":115,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":128,"lineto":128,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":147,"lineto":147,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_tostr-18","ex/HEAD/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/HEAD/cat-file.html#git_oid_tostr-26","ex/HEAD/cat-file.html#git_oid_tostr-27","ex/HEAD/cat-file.html#git_oid_tostr-28","ex/HEAD/cat-file.html#git_oid_tostr-29","ex/HEAD/cat-file.html#git_oid_tostr-30"],"log.c":["ex/HEAD/log.html#git_oid_tostr-39","ex/HEAD/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_oid_tostr-12","ex/HEAD/rev-parse.html#git_oid_tostr-13","ex/HEAD/rev-parse.html#git_oid_tostr-14","ex/HEAD/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":155,"lineto":155,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_cpy-20","ex/HEAD/blame.html#git_oid_cpy-21","ex/HEAD/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":164,"lineto":164,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":173,"lineto":173,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":184,"lineto":184,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":193,"lineto":193,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":203,"lineto":203,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":210,"lineto":210,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/HEAD/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/HEAD/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":231,"lineto":231,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":257,"lineto":257,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":264,"lineto":264,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/HEAD/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_proxy_init_options":{"type":"function","file":"proxy.h","line":88,"lineto":88,"args":[{"name":"opts","type":"git_proxy_options *","comment":"the options struct to initialize"},{"name":"version","type":"unsigned int","comment":"the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`"}],"argline":"git_proxy_options *opts, unsigned int version","sig":"git_proxy_options *::unsigned int","return":{"type":"int","comment":null},"description":"<p>Initialize a proxy options structure</p>\n","comments":"","group":"proxy"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_lookup-60"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_target-61"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_symbolic_target-62"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_type-63"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_list-64"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_dup":{"type":"function","file":"refs.h","line":473,"lineto":473,"args":[{"name":"dest","type":"git_reference **","comment":"pointer where to store the copy"},{"name":"source","type":"git_reference *","comment":"object to copy"}],"argline":"git_reference **dest, git_reference *source","sig":"git_reference **::git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing reference.</p>\n","comments":"<p>Call <code>git_reference_free</code> to free the data.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":480,"lineto":480,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"general.c":["ex/HEAD/general.html#git_reference_free-65"],"status.c":["ex/HEAD/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":500,"lineto":502,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":513,"lineto":516,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":525,"lineto":525,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":538,"lineto":538,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":545,"lineto":545,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":565,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":579,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":591,"lineto":591,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":601,"lineto":601,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":611,"lineto":611,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":621,"lineto":621,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":631,"lineto":631,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":687,"lineto":691,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":708,"lineto":711,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":727,"lineto":727,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":741,"lineto":741,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/HEAD/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":38,"lineto":42,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":55,"lineto":60,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":73,"lineto":76,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":89,"lineto":89,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/HEAD/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":101,"lineto":101,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":109,"lineto":109,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":117,"lineto":117,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":128,"lineto":128,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":139,"lineto":139,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":165,"lineto":165,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":178,"lineto":178,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":189,"lineto":189,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":202,"lineto":202,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":213,"lineto":213,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":221,"lineto":221,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":230,"lineto":230,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"proxy_opts","type":"const git_proxy_options *","comment":"proxy settings"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_free-6","ex/HEAD/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/HEAD/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/HEAD/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":473,"lineto":475,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":577,"lineto":579,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_fetch_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":626,"lineto":628,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":646,"lineto":646,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":660,"lineto":660,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":676,"lineto":681,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":697,"lineto":701,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":710,"lineto":710,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":722,"lineto":724,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":729,"lineto":729,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/HEAD/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":737,"lineto":737,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":749,"lineto":749,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":756,"lineto":756,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":778,"lineto":782,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":790,"lineto":790,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":802,"lineto":802,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/HEAD/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":820,"lineto":820,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/HEAD/general.html#git_repository_open-66"],"network/git2.c":["ex/HEAD/network/git2.html#git_repository_open-5"],"remote.c":["ex/HEAD/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/HEAD/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":141,"lineto":145,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository. May be NULL if\n        flags is GIT_REPOSITORY_OPEN_FROM_ENV."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/HEAD/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/HEAD/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/HEAD/describe.html#git_repository_open_ext-6"],"diff.c":["ex/HEAD/diff.html#git_repository_open_ext-15"],"log.c":["ex/HEAD/log.html#git_repository_open_ext-44","ex/HEAD/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/HEAD/status.html#git_repository_open_ext-5"],"tag.c":["ex/HEAD/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":158,"lineto":158,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":171,"lineto":171,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/HEAD/blame.html#git_repository_free-25"],"cat-file.c":["ex/HEAD/cat-file.html#git_repository_free-32"],"describe.c":["ex/HEAD/describe.html#git_repository_free-7"],"diff.c":["ex/HEAD/diff.html#git_repository_free-16"],"general.c":["ex/HEAD/general.html#git_repository_free-67"],"init.c":["ex/HEAD/init.html#git_repository_free-6"],"log.c":["ex/HEAD/log.html#git_repository_free-46"],"network/clone.c":["ex/HEAD/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/HEAD/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_repository_free-17"],"status.c":["ex/HEAD/status.html#git_repository_free-6"],"tag.c":["ex/HEAD/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":188,"lineto":191,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":300,"lineto":302,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":317,"lineto":320,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/HEAD/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":347,"lineto":347,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":359,"lineto":359,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_path-9"],"status.c":["ex/HEAD/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":393,"lineto":393,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/HEAD/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":412,"lineto":413,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":421,"lineto":421,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/HEAD/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":437,"lineto":437,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":453,"lineto":453,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/HEAD/general.html#git_repository_config_snapshot-68"]}},"git_repository_odb":{"type":"function","file":"repository.h","line":469,"lineto":469,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_repository_odb-33"],"general.c":["ex/HEAD/general.html#git_repository_odb-69"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":485,"lineto":485,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":501,"lineto":501,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/HEAD/general.html#git_repository_index-70"],"init.c":["ex/HEAD/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":519,"lineto":519,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":526,"lineto":526,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":535,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":554,"lineto":557,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":574,"lineto":577,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":602,"lineto":607,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":627,"lineto":629,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":647,"lineto":649,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":663,"lineto":665,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":684,"lineto":685,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":715,"lineto":715,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":729,"lineto":729,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":746,"lineto":746,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":758,"lineto":758,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":771,"lineto":771,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Optional checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"the revert options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/HEAD/blame.html#git_revparse_single-26"],"cat-file.c":["ex/HEAD/cat-file.html#git_revparse_single-34"],"describe.c":["ex/HEAD/describe.html#git_revparse_single-8"],"log.c":["ex/HEAD/log.html#git_revparse_single-47"],"tag.c":["ex/HEAD/tag.html#git_revparse_single-13","ex/HEAD/tag.html#git_revparse_single-14","ex/HEAD/tag.html#git_revparse_single-15","ex/HEAD/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/HEAD/blame.html#git_revparse-27"],"log.c":["ex/HEAD/log.html#git_revparse-48"],"rev-parse.c":["ex/HEAD/rev-parse.html#git_revparse-18","ex/HEAD/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":73,"lineto":73,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_new-71"],"log.c":["ex/HEAD/log.html#git_revwalk_new-49","ex/HEAD/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":88,"lineto":88,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":107,"lineto":107,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_push-72"],"log.c":["ex/HEAD/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":125,"lineto":125,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":133,"lineto":133,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/HEAD/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":148,"lineto":148,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/HEAD/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":167,"lineto":167,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":175,"lineto":175,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":186,"lineto":186,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":197,"lineto":197,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":217,"lineto":217,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_next-73"],"log.c":["ex/HEAD/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":228,"lineto":228,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_sorting-74"],"log.c":["ex/HEAD/log.html#git_revwalk_sorting-55","ex/HEAD/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":243,"lineto":243,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":250,"lineto":250,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":258,"lineto":258,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/HEAD/general.html#git_revwalk_free-75"],"log.c":["ex/HEAD/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":267,"lineto":267,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":288,"lineto":291,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/HEAD/general.html#git_signature_new-76","ex/HEAD/general.html#git_signature_new-77"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/HEAD/init.html#git_signature_default-12"],"tag.c":["ex/HEAD/tag.html#git_signature_default-17"]}},"git_signature_from_buffer":{"type":"function","file":"signature.h","line":76,"lineto":76,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"buf","type":"const char *","comment":"signature string"}],"argline":"git_signature **out, const char *buf","sig":"git_signature **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new signature by parsing the given buffer, which is\n expected to be in the format &quot;Real Name \n&lt;email</p>\n\n<blockquote>\n<p>timestamp tzoffset&quot;,\n where <code>timestamp</code> is the number of seconds since the Unix epoch and\n <code>tzoffset</code> is the timezone offset in <code>hhmm</code> format (note the lack\n of a colon separator).</p>\n</blockquote>\n","comments":"","group":"signature"},"git_signature_dup":{"type":"function","file":"signature.h","line":88,"lineto":88,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":99,"lineto":99,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"general.c":["ex/HEAD/general.html#git_signature_free-78","ex/HEAD/general.html#git_signature_free-79"],"init.c":["ex/HEAD/init.html#git_signature_free-13"],"tag.c":["ex/HEAD/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_new-12","ex/HEAD/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_entrycount-14","ex/HEAD/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_byindex-16","ex/HEAD/status.html#git_status_byindex-17","ex/HEAD/status.html#git_status_byindex-18","ex/HEAD/status.html#git_status_byindex-19","ex/HEAD/status.html#git_status_byindex-20","ex/HEAD/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/HEAD/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/HEAD/general.html#git_strarray_free-80"],"remote.c":["ex/HEAD/remote.html#git_strarray_free-16","ex/HEAD/remote.html#git_strarray_free-17"],"tag.c":["ex/HEAD/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":170,"lineto":171,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":191,"lineto":191,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn&#39;t contain\n the target commit (e.g. because fetchRecurseSubmodules isn&#39;t set), then\n the submodule is fetched using the fetch options supplied in options.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":220,"lineto":223,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":230,"lineto":230,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":280,"lineto":285,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":297,"lineto":297,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":309,"lineto":311,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":324,"lineto":324,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":332,"lineto":332,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":343,"lineto":343,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":351,"lineto":351,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":361,"lineto":361,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":369,"lineto":369,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":396,"lineto":396,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":404,"lineto":404,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":412,"lineto":412,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":425,"lineto":425,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":450,"lineto":451,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":463,"lineto":466,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":478,"lineto":479,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":491,"lineto":494,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":507,"lineto":508,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":520,"lineto":523,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":538,"lineto":538,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":553,"lineto":556,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":566,"lineto":566,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":580,"lineto":582,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":594,"lineto":594,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":610,"lineto":614,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/HEAD/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":630,"lineto":632,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":115,"lineto":117,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_repository_submodule_cache_all":{"type":"function","file":"sys/repository.h","line":149,"lineto":150,"args":[{"name":"repo","type":"git_repository *","comment":"the repository whose submodules will be cached."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Load and cache all submodules.</p>\n","comments":"<p>Because the <code>.gitmodules</code> file is unstructured, loading submodules is an O(N) operation.  Any operation (such as <code>git_rebase_init</code>) that requires accessing all submodules is O(N^2) in the number of submodules, if it has to look each one up individually.  This function loads all submodules and caches them so that subsequent calls to <code>git_submodule_lookup</code> are O(1).</p>\n","group":"repository"},"git_repository_submodule_cache_clear":{"type":"function","file":"sys/repository.h","line":164,"lineto":165,"args":[{"name":"repo","type":"git_repository *","comment":"the repository whose submodule cache will be cleared"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Clear the submodule cache.</p>\n","comments":"<p>Clear the submodule cache populated by <code>git_repository_submodule_cache_all</code>. If there is no cache, do nothing.</p>\n\n<p>The cache incorporates data from the repository&#39;s configuration, as well as the state of the working tree, the index, and HEAD.  So any time any of these has changed, the cache might become invalid.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":54,"lineto":54,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_time_monotonic":{"type":"function","file":"sys/time.h","line":27,"lineto":27,"args":[],"argline":"","sig":"","return":{"type":"double","comment":null},"description":"<p>Return a monotonic time value, useful for measuring running time\n and setting up timeouts.</p>\n","comments":"<p>The returned value is an arbitrary point in time -- it can only be used when comparing it to another <code>git_time_monotonic</code> call.</p>\n\n<p>The time is returned in seconds, with a decimal fraction that differs on accuracy based on the underlying system, but should be least accurate to Nanoseconds.</p>\n\n<p>This function cannot fail.</p>\n","group":"time"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":119,"lineto":121,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":177,"lineto":178,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":191,"lineto":194,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":204,"lineto":207,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":217,"lineto":220,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":231,"lineto":231,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":352,"lineto":355,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":364,"lineto":367,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":376,"lineto":379,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/HEAD/general.html#git_tag_lookup-81"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag","examples":{"general.c":["ex/HEAD/general.html#git_tag_free-82"]}},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/HEAD/general.html#git_tag_target-83"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_target_type-36"],"general.c":["ex/HEAD/general.html#git_tag_target_type-84"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_name-37"],"general.c":["ex/HEAD/general.html#git_tag_name-85"],"tag.c":["ex/HEAD/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tag_message-39","ex/HEAD/cat-file.html#git_tag_message-40"],"general.c":["ex/HEAD/general.html#git_tag_message-86"],"tag.c":["ex/HEAD/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/HEAD/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_tag_dup":{"type":"function","file":"tag.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_tag **","comment":"Pointer to store the copy of the tag"},{"name":"source","type":"git_tag *","comment":"Original tag to copy"}],"argline":"git_tag **out, git_tag *source","sig":"git_tag **::git_tag *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tag. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_lookup-87","ex/HEAD/general.html#git_tree_lookup-88"],"init.c":["ex/HEAD/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/HEAD/diff.html#git_tree_free-17","ex/HEAD/diff.html#git_tree_free-18"],"general.c":["ex/HEAD/general.html#git_tree_free-89","ex/HEAD/general.html#git_tree_free-90"],"init.c":["ex/HEAD/init.html#git_tree_free-15"],"log.c":["ex/HEAD/log.html#git_tree_free-58","ex/HEAD/log.html#git_tree_free-59","ex/HEAD/log.html#git_tree_free-60","ex/HEAD/log.html#git_tree_free-61","ex/HEAD/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/HEAD/general.html#git_tree_entrycount-91"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_entry_byname-92"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/HEAD/general.html#git_tree_entry_byindex-93"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/HEAD/general.html#git_tree_entry_name-94","ex/HEAD/general.html#git_tree_entry_name-95"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/HEAD/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/HEAD/general.html#git_tree_entry_to_object-96"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_treebuilder_write_with_buffer":{"type":"function","file":"tree.h","line":389,"lineto":390,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"},{"name":"tree","type":"git_buf *","comment":"Shared buffer for writing the tree. Will be grown as necessary."}],"argline":"git_oid *oid, git_treebuilder *bld, git_buf *tree","sig":"git_oid *::git_treebuilder *::git_buf *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object\n using a shared git_buf.</p>\n","comments":"","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":419,"lineto":423,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"},"git_tree_dup":{"type":"function","file":"tree.h","line":432,"lineto":432,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to store the copy of the tree"},{"name":"source","type":"git_tree *","comment":"Original tree to copy"}],"argline":"git_tree **out, git_tree *source","sig":"git_tree **::git_tree *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tree. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tree"},"git_tree_create_updated":{"type":"function","file":"tree.h","line":478,"lineto":478,"args":[{"name":"out","type":"git_oid *","comment":"id of the new tree"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the tree, must be the\n same as for `baseline`"},{"name":"baseline","type":"git_tree *","comment":"the tree to base these changes on"},{"name":"nupdates","type":"size_t","comment":"the number of elements in the update list"},{"name":"updates","type":"const git_tree_update *","comment":"the list of updates to perform"}],"argline":"git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates","sig":"git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *","return":{"type":"int","comment":null},"description":"<p>Create a tree based on another one with the specified modifications</p>\n","comments":"<p>Given the <code>baseline</code> perform the changes described in the list of <code>updates</code> and create a new tree.</p>\n\n<p>This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a <code>git_index</code> and modifying that, but in exchange it is not as flexible.</p>\n\n<p>Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":353,"lineto":357,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":369,"lineto":373,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":452,"lineto":455,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":509,"lineto":512,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":529,"lineto":532,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":582,"lineto":586,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":27,"lineto":27,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"uint32_t","comment":null},{"name":"total","type":"uint32_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, uint32_t current, uint32_t total, void *payload","sig":"int::uint32_t::uint32_t::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":368,"lineto":368,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Callback used to inform of upcoming updates.</p>\n","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":277,"lineto":279,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_merge_driver_init_fn":{"type":"callback","file":"sys/merge.h","line":71,"lineto":71,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.initialize</code>, this is an optional callback invoked before a merge driver is first used.  It will be called once at most per library lifetime.</p>\n\n<p>If non-NULL, the merge driver&#39;s <code>initialize</code> callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the merge driver).</p>\n"},"git_merge_driver_shutdown_fn":{"type":"callback","file":"sys/merge.h","line":83,"lineto":83,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.shutdown</code>, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_merge_driver</code> object itself.</p>\n"},"git_merge_driver_apply_fn":{"type":"callback","file":"sys/merge.h","line":103,"lineto":109,"args":[{"name":"self","type":"int *","comment":null},{"name":"path_out","type":"const char **","comment":null},{"name":"mode_out","type":"int *","comment":null},{"name":"merged_out","type":"int *","comment":null},{"name":"filter_name","type":"const char *","comment":null},{"name":"src","type":"const git_merge_driver_source *","comment":null}],"argline":"int *self, const char **path_out, int *mode_out, int *merged_out, const char *filter_name, const git_merge_driver_source *src","sig":"int *::const char **::int *::int *::const char *::const git_merge_driver_source *","return":{"type":"int","comment":null},"description":"<p>Callback to perform the merge.</p>\n","comments":"<p>Specified as <code>driver.apply</code>, this is the callback that actually does the merge.  If it can successfully perform a merge, it should populate <code>path_out</code> with a pointer to the filename to accept, <code>mode_out</code> with the resultant mode, and <code>merged_out</code> with the buffer of the merged file and then return 0.  If the driver returns <code>GIT_PASSTHROUGH</code>, then the default merge driver should instead be run.  It can also return <code>GIT_EMERGECONFLICT</code> if the driver is not able to produce a merge result, and the file will remain conflicted.  Any other errors will fail and return to the caller.</p>\n\n<p>The <code>filter_name</code> contains the name of the filter that was invoked, as specified by the file&#39;s attributes.</p>\n\n<p>The <code>src</code> contains the data about the file to be merged.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":393,"lineto":394,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_create_buffer","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_diff_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url","git_treebuilder_write_with_buffer"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_dup","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":" default: 10 "},{"type":"unsigned int","name":"describe_strategy","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"const char *","name":"pattern","comments":""},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_result",{"decl":"git_describe_result","type":"struct","value":"git_describe_result","file":"describe.h","line":111,"lineto":111,"tdef":"typedef","description":" A struct that stores the result of a describe operation.","comments":"","used":{"returns":[],"needs":["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["unsigned int contains_data","git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":492,"lineto":503,"block":"unsigned int contains_data\ngit_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"unsigned int","name":"contains_data","comments":" Whether there is data in this binary structure or not.  If this\n is `1`, then this was produced and included binary content.  If\n this is `0` then this was generated knowing only that a binary\n file changed but without providing the data, probably from a patch\n that said `Binary files a/file.txt and b/file.txt differ`."},{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":477,"lineto":489,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":465,"lineto":474,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":331,"lineto":338,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode","uint16_t id_abbrev"],"type":"struct","value":"git_diff_file","file":"diff.h","line":286,"lineto":293,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>id</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n\n<p>The <code>id_abbrev</code> represents the known length of the <code>id</code> field, when converted to a hex string.  It is generally <code>GIT_OID_HEXSZ</code>, unless this delta was created from reading a patch file, in which case it may be abbreviated to something reasonable, like 7 characters.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""},{"type":"uint16_t","name":"id_abbrev","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":697,"lineto":723,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":591,"lineto":660,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1315,"lineto":1322,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1327,"lineto":1349,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1039,"lineto":1045,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print","git_diff_to_buf"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":517,"lineto":524,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":""},{"type":"int","name":"old_lines","comments":" Starting line number in old_file "},{"type":"int","name":"new_start","comments":" Number of lines in old_file "},{"type":"int","name":"new_lines","comments":" Starting line number in new_file "},{"type":"size_t","name":"header_len","comments":" Number of lines in new_file "},{"type":"char [128]","name":"header","comments":" Number of bytes in header text "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":564,"lineto":572,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":543,"lineto":559,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":402,"lineto":422,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":665,"lineto":675,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1229,"lineto":1229,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1234,"lineto":1249,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM","GITERR_PATCH"],"type":"enum","file":"errors.h","line":70,"lineto":103,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM\nGITERR_PATCH","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30},{"type":"int","name":"GITERR_PATCH","comments":"","value":31}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":134,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"<p>If set, libgit2 was built thread-aware and can be safely used from multiple\n threads.</p>\n","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"<p>If set, libgit2 was built with and linked against a TLS implementation.\n Custom TLS streams may still be added by the user to support HTTPS\n regardless of this.</p>\n","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"<p>If set, libgit2 was built with and linked against libssh2. A custom\n transport may still be added by the user to support libssh2 regardless of\n this.</p>\n","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"<p>If set, libgit2 was built with support for sub-second resolution in file\n modification times.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":525,"lineto":562,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION","GIT_OPT_SET_SSL_CIPHERS","GIT_OPT_GET_USER_AGENT"],"type":"enum","file":"common.h","line":162,"lineto":181,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION","comments":"","value":15},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":16},{"type":"int","name":"GIT_OPT_GET_USER_AGENT","comments":"","value":17}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":312,"lineto":341,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_driver",{"decl":["unsigned int version","git_merge_driver_init_fn initialize","git_merge_driver_shutdown_fn shutdown","git_merge_driver_apply_fn apply"],"type":"struct","value":"git_merge_driver","file":"sys/merge.h","line":118,"lineto":135,"block":"unsigned int version\ngit_merge_driver_init_fn initialize\ngit_merge_driver_shutdown_fn shutdown\ngit_merge_driver_apply_fn apply","tdef":null,"description":" Merge driver structure used to register custom merge drivers.","comments":"<p>To associate extra data with a driver, allocate extra data and put the <code>git_merge_driver</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":" The `version` should be set to `GIT_MERGE_DRIVER_VERSION`. "},{"type":"git_merge_driver_init_fn","name":"initialize","comments":" Called when the merge driver is first used for any file. "},{"type":"git_merge_driver_shutdown_fn","name":"shutdown","comments":" Called when the merge driver is unregistered from the system. "},{"type":"git_merge_driver_apply_fn","name":"apply","comments":" Called to merge the contents of a conflict.  If this function\n returns `GIT_PASSTHROUGH` then the default (`text`) merge driver\n will instead be invoked.  If this function returns\n `GIT_EMERGECONFLICT` then the file will remain conflicted."}],"used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_driver_source",{"decl":"git_merge_driver_source","type":"struct","value":"git_merge_driver_source","file":"sys/merge.h","line":36,"lineto":36,"tdef":"typedef","description":" A merge driver source represents the file to be merged","comments":"","used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","const char * default_driver","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":290,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"const char *","name":"default_driver","comments":" Default merge driver to be used when both sides of a merge have\n changed.  The default is the `text` driver."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver."},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":346,"lineto":364,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nint (*)(git_odb_backend *, const git_oid *) freshen\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"freshen","comments":" \"Freshens\" an already existing object, updating its last-used\n time.  This occurs when `git_odb_write` was called, but the\n object already existed (and will not be re-written).  The\n underlying implementation may want to update last-used timestamps.\n\n If callers implement this, they should return `0` if the object\n exists and was freshened, and non-zero otherwise."},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_expand_id",{"decl":["git_oid id","unsigned short length","git_otype type"],"type":"struct","value":"git_odb_expand_id","file":"odb.h","line":180,"lineto":195,"block":"git_oid id\nunsigned short length\ngit_otype type","tdef":"typedef","description":" The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.","comments":"","fields":[{"type":"git_oid","name":"id","comments":" The object ID to expand "},{"type":"unsigned short","name":"length","comments":" The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)"},{"type":"git_otype","name":"type","comments":" The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID."}],"used":{"returns":[],"needs":["git_odb_expand_ids"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write","git_treebuilder_write_with_buffer"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":215,"lineto":215,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_proxy_options",{"decl":["unsigned int version","git_proxy_t type","const char * url","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","void * payload"],"type":"struct","value":"git_proxy_options","file":"proxy.h","line":42,"lineto":77,"block":"unsigned int version\ngit_proxy_t type\nconst char * url\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\nvoid * payload","tdef":"typedef","description":" Options for connecting through a proxy","comments":"<p>Note that not all types may be supported, depending on the platform and compilation options.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_proxy_t","name":"type","comments":" The type of proxy to use, by URL, auto-detect."},{"type":"const char *","name":"url","comments":" The URL of the proxy."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"void *","name":"payload","comments":" Payload to be provided to the credentials and certificate\n check callbacks."}],"used":{"returns":[],"needs":["git_proxy_init_options","git_remote_connect"]}}],["git_proxy_t",{"decl":["GIT_PROXY_NONE","GIT_PROXY_AUTO","GIT_PROXY_SPECIFIED"],"type":"enum","file":"proxy.h","line":18,"lineto":34,"block":"GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED","tdef":"typedef","description":" The type of proxy to use.","comments":"","fields":[{"type":"int","name":"GIT_PROXY_NONE","comments":"<p>Do not attempt to connect through a proxy</p>\n\n<p>If built against libcurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.</p>\n","value":0},{"type":"int","name":"GIT_PROXY_AUTO","comments":"<p>Try to auto-detect the proxy from the git configuration.</p>\n","value":1},{"type":"int","name":"GIT_PROXY_SPECIFIED","comments":"<p>Connect via the URL given in the options</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":585,"lineto":612,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":636,"lineto":665,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":497,"lineto":515,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":376,"lineto":460,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_submodule_cache_all","git_repository_submodule_cache_clear","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":221,"lineto":229,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":244,"lineto":248,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":278,"lineto":287,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE","GIT_REPOSITORY_OPEN_NO_DOTGIT","GIT_REPOSITORY_OPEN_FROM_ENV"],"type":"enum","file":"repository.h","line":115,"lineto":121,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE\nGIT_REPOSITORY_OPEN_NO_DOTGIT\nGIT_REPOSITORY_OPEN_FROM_ENV","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks. * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by   appending /.git to the start_path; only open the repository if   start_path itself points to the git directory. * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,   respecting the environment variables used by the git command-line   tools. If set, <code>git_repository_open_ext</code> will ignore the other   flags and the <code>ceiling_dirs</code> argument, and will allow a NULL <code>path</code>   to use <code>GIT_DIR</code> or search from the current directory. The search   for a repository will respect $GIT_CEILING_DIRECTORIES and   $GIT_DISCOVERY_ACROSS_FILESYSTEM.  The opened repository will   respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and   $GIT_ALTERNATE_OBJECT_DIRECTORIES.  In the future, this flag will   also cause <code>git_repository_open_ext</code> to respect $GIT_WORK_TREE and   $GIT_COMMON_DIR; currently, <code>git_repository_open_ext</code> with this   flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is   set.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_DOTGIT","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_OPEN_FROM_ENV","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":693,"lineto":706,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":326,"lineto":339,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":53,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the output with the same default time-order method from git.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order (parents before\n children); this sorting mode can be combined with time sorting to\n produce git&#39;s &quot;time-order&quot;.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const int *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":29,"lineto":41,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const int *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int allow_fetch"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":154,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint allow_fetch","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. "},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"allow_fetch","comments":" Allow fetching from the submodule's default remote if the target\n commit isn't found. Enabled by default."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":31,"lineto":33,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treebuilder_write_with_buffer","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_tree_update",{"decl":["git_tree_update_t action","git_oid id","git_filemode_t filemode","const char * path"],"type":"struct","value":"git_tree_update","file":"tree.h","line":447,"lineto":456,"block":"git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path","tdef":"typedef","description":" An action to perform during the update of a tree","comments":"","fields":[{"type":"git_tree_update_t","name":"action","comments":" Update action. If it's an removal, only the path is looked at "},{"type":"git_oid","name":"id","comments":" The entry's id "},{"type":"git_filemode_t","name":"filemode","comments":" The filemode/kind of object "},{"type":"const char *","name":"path","comments":" The full path from the root tree "}],"used":{"returns":[],"needs":["git_tree_create_updated"]}}],["git_tree_update_t",{"decl":["GIT_TREE_UPDATE_UPSERT","GIT_TREE_UPDATE_REMOVE"],"type":"enum","file":"tree.h","line":437,"lineto":442,"block":"GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE","tdef":"typedef","description":" The kind of update to perform","comments":"","fields":[{"type":"int","name":"GIT_TREE_UPDATE_UPSERT","comments":"<p>Update or insert an entry at the specified path </p>\n","value":0},{"type":"int","name":"GIT_TREE_UPDATE_REMOVE","comments":"<p>Remove an entry from the specified path </p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treebuilder_write_with_buffer"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":397,"lineto":400,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromstream","git_blob_create_fromstream_commit","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_dup","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["proxy",["git_proxy_init_options"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_submodule_cache_all","git_repository_submodule_cache_clear","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["time",["git_time_monotonic"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treebuilder_write_with_buffer"]]],"examples":[["add.c","ex/HEAD/add.html"],["blame.c","ex/HEAD/blame.html"],["cat-file.c","ex/HEAD/cat-file.html"],["common.c","ex/HEAD/common.html"],["describe.c","ex/HEAD/describe.html"],["diff.c","ex/HEAD/diff.html"],["for-each-ref.c","ex/HEAD/for-each-ref.html"],["general.c","ex/HEAD/general.html"],["init.c","ex/HEAD/init.html"],["log.c","ex/HEAD/log.html"],["network/clone.c","ex/HEAD/network/clone.html"],["network/common.c","ex/HEAD/network/common.html"],["network/fetch.c","ex/HEAD/network/fetch.html"],["network/git2.c","ex/HEAD/network/git2.html"],["network/index-pack.c","ex/HEAD/network/index-pack.html"],["network/ls-remote.c","ex/HEAD/network/ls-remote.html"],["remote.c","ex/HEAD/remote.html"],["rev-list.c","ex/HEAD/rev-list.html"],["rev-parse.c","ex/HEAD/rev-parse.html"],["showindex.c","ex/HEAD/showindex.html"],["status.c","ex/HEAD/status.html"],["tag.c","ex/HEAD/tag.html"]]}
\ No newline at end of file
diff --git a/ex/HEAD/general.html b/ex/HEAD/general.html
index af8949d..240ccc4 100644
--- a/ex/HEAD/general.html
+++ b/ex/HEAD/general.html
@@ -126,7 +126,7 @@
 <span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
 <span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
 <span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
-<span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-4'>
@@ -141,7 +141,7 @@
       <td class=code>
         <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
 <span class="p">{</span>
-  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#HEAD/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-31" class="fnlink" href="../../#HEAD/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
   <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
     <span class="k">return</span><span class="p">;</span>
 
@@ -168,7 +168,7 @@
 including threading and crypto</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#HEAD/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-32" class="fnlink" href="../../#HEAD/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
       </td>
     </tr>
     <tr id='section-Opening_the_Repository'>
@@ -187,7 +187,7 @@
       <td class=code>
         <div class='highlight'><pre>  <span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
 
-  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-60" class="fnlink" href="../../#HEAD/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-66" class="fnlink" href="../../#HEAD/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
   <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span>
 
   <span class="n">oid_parsing</span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
@@ -200,7 +200,7 @@
   <span class="n">revwalking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
   <span class="n">index_walking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
   <span class="n">reference_listing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
-  <span class="n">config_files</span><span class="p">(</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+  <span class="n">config_files</span><span class="p">(</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-7'>
@@ -211,7 +211,7 @@
         <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-61" class="fnlink" href="../../#HEAD/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-67" class="fnlink" href="../../#HEAD/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
 
   <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
 <span class="p">}</span></pre></div>
@@ -246,7 +246,7 @@
 key we&#39;re working with.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-10'>
@@ -282,7 +282,7 @@
         <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-54" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-13'>
@@ -293,7 +293,7 @@
         <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-55" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
@@ -321,7 +321,7 @@
   <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
   <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
 
-  <span class="n"><a name="git_repository_odb-62" class="fnlink" href="../../#HEAD/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+  <span class="n"><a name="git_repository_odb-69" class="fnlink" href="../../#HEAD/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-Raw_Object_Reading'>
@@ -345,7 +345,7 @@
 knowing their type and inspect the raw bytes unparsed.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-35" class="fnlink" href="../../#HEAD/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-40" class="fnlink" href="../../#HEAD/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
   <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
@@ -362,8 +362,8 @@
 to be hugely helpful as a raw object.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-38" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
-  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-40" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-43" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-45" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-18'>
@@ -375,9 +375,9 @@
 a string representation of that value (and vice-versa).</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#HEAD/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-37" class="fnlink" href="../../#HEAD/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">object data: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
-      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-39" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-44" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
       <span class="n">str_type</span><span class="p">,</span> <span class="n">data</span><span class="p">);</span></pre></div>
       </td>
     </tr>
@@ -390,7 +390,7 @@
 it or it will leak memory.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-37" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-42" class="fnlink" href="../../#HEAD/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-Raw_Object_Writing'>
@@ -415,7 +415,7 @@
 Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-36" class="fnlink" href="../../#HEAD/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-41" class="fnlink" href="../../#HEAD/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-22'>
@@ -427,8 +427,19 @@
 generated when the object was written to our database.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-56" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Free the object database after usage.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_free-39" class="fnlink" href="../../#HEAD/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -450,16 +461,16 @@
   <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
   <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
   <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
-  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
   <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-24'>
+    <tr id='section-25'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-24">&#182;</a>
+          <a class="pilcrow" href="#section-25">&#182;</a>
         </div>
         <p>Creating signatures for an authoring identity and time is simple.  You
 will need to do this to specify who created a commit and when.  Default
@@ -468,48 +479,26 @@
 example file to see how to access config values.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-69" class="fnlink" href="../../#HEAD/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-76" class="fnlink" href="../../#HEAD/group/signature/git_signature_new">git_signature_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
       <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
-  <span class="n"><a name="git_signature_new-70" class="fnlink" href="../../#HEAD/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+  <span class="n"><a name="git_signature_new-77" class="fnlink" href="../../#HEAD/group/signature/git_signature_new">git_signature_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">committer</span><span class="p">,</span>
       <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-25'>
-      <td class=docs>
-        <div class="pilwrap">
-          <a class="pilcrow" href="#section-25">&#182;</a>
-        </div>
-        <p>Commit objects need a tree to point to and optionally one or more
-parents.  Here we&#39;re creating oid objects to create the commit with,
-but you can also use</p>
-      </td>
-      <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
-  <span class="n"><a name="git_tree_lookup-77" class="fnlink" href="../../#HEAD/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
-  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
-  <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
-      </td>
-    </tr>
     <tr id='section-26'>
       <td class=docs>
         <div class="pilwrap">
           <a class="pilcrow" href="#section-26">&#182;</a>
         </div>
-        <p>Here we actually create the commit object with a single call with all
-the values we need to create the commit.  The SHA key is written to the
-<code>commit_id</code> variable here.</p>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#HEAD/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
-      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
-      <span class="n">repo</span><span class="p">,</span>
-      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
-      <span class="n">author</span><span class="p">,</span>
-      <span class="n">cmtter</span><span class="p">,</span>
-      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
-      <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
-      <span class="n">tree</span><span class="p">,</span>
-      <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-87" class="fnlink" href="../../#HEAD/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-48" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-27'>
@@ -517,11 +506,47 @@
         <div class="pilwrap">
           <a class="pilcrow" href="#section-27">&#182;</a>
         </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-25" class="fnlink" href="../../#HEAD/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+      <span class="n">repo</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+      <span class="n">author</span><span class="p">,</span>
+      <span class="n">committer</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+      <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+      <span class="n">tree</span><span class="p">,</span>
+      <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-28'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-28">&#182;</a>
+        </div>
         <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-57" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-29'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-29">&#182;</a>
+        </div>
+        <p>Free all objects used in the meanwhile.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-89" class="fnlink" href="../../#HEAD/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-78" class="fnlink" href="../../#HEAD/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">author</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-79" class="fnlink" href="../../#HEAD/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">committer</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -565,33 +590,33 @@
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
 
-  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-49" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
 
-  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
   <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-30'>
+    <tr id='section-32'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-30">&#182;</a>
+          <a class="pilcrow" href="#section-32">&#182;</a>
         </div>
         <p>Each of the properties of the commit object are accessible via methods,
-including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#HEAD/group/commit/git_commit_time">git_commit_time</a></code> which
-returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+including commonly needed variations, such as <code><a name="git_commit_time-18" class="fnlink" href="../../#HEAD/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-15" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
 commit message (as a NUL-terminated string).</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
-  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#HEAD/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
-  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#HEAD/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
-  <span class="n">time</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#HEAD/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-16" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-21" class="fnlink" href="../../#HEAD/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-20" class="fnlink" href="../../#HEAD/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">time</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-19" class="fnlink" href="../../#HEAD/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-31'>
+    <tr id='section-33'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-31">&#182;</a>
+          <a class="pilcrow" href="#section-33">&#182;</a>
         </div>
         <p>The author and committer methods return [git<em>signature] structures,
 which give you name, email and <code>when</code>, which is a `git</em>time` structure,
@@ -604,10 +629,10 @@
     <span class="n">ctime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">time</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-32'>
+    <tr id='section-34'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-32">&#182;</a>
+          <a class="pilcrow" href="#section-34">&#182;</a>
         </div>
         <p>Commits can have zero or more parents. The first (root) commit will
 have no parents, most commits will have one (i.e. the commit it was
@@ -615,17 +640,17 @@
 technically have any number, though it&#39;s rare to have more than two.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#HEAD/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-23" class="fnlink" href="../../#HEAD/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
   <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
     <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
 
-    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#HEAD/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
-    <span class="n"><a name="git_oid_fmt-53" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#HEAD/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n"><a name="git_commit_parent-24" class="fnlink" href="../../#HEAD/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-58" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_commit_id-14" class="fnlink" href="../../#HEAD/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
     <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
-    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
   <span class="p">}</span>
 
-  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -653,25 +678,25 @@
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-34'>
+    <tr id='section-36'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-34">&#182;</a>
+          <a class="pilcrow" href="#section-36">&#182;</a>
         </div>
         <p>We create an oid for the tag object if we know the SHA and look it up
 the same way that we would a commit (or any other object).</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-50" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
 
-  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-72" class="fnlink" href="../../#HEAD/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-81" class="fnlink" href="../../#HEAD/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
   <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-35'>
+    <tr id='section-37'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-35">&#182;</a>
+          <a class="pilcrow" href="#section-37">&#182;</a>
         </div>
         <p>Now that we have the tag object, we can extract the information it
 generally contains: the target (usually a commit object), the type of
@@ -679,14 +704,24 @@
 git_signature - name, email, timestamp), and the tag message.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-73" class="fnlink" href="../../#HEAD/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
-  <span class="n">name</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-75" class="fnlink" href="../../#HEAD/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;test&quot; */</span>
-  <span class="n">type</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-74" class="fnlink" href="../../#HEAD/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="cm">/* GIT_OBJ_COMMIT (otype enum) */</span>
-  <span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-76" class="fnlink" href="../../#HEAD/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;tag message\n&quot; */</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-83" class="fnlink" href="../../#HEAD/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">name</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-85" class="fnlink" href="../../#HEAD/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;test&quot; */</span>
+  <span class="n">type</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-84" class="fnlink" href="../../#HEAD/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="cm">/* GIT_OBJ_COMMIT (otype enum) */</span>
+  <span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-86" class="fnlink" href="../../#HEAD/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;tag message\n&quot; */</span>
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Name: %s</span><span class="se">\n</span><span class="s">Tag Type: %s</span><span class="se">\n</span><span class="s">Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
-    <span class="n">name</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-34" class="fnlink" href="../../#HEAD/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span>
-
-  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">name</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-38" class="fnlink" href="../../#HEAD/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Free both the commit and tag after usage.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_free-12" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n"><a name="git_tag_free-82" class="fnlink" href="../../#HEAD/group/tag/git_tag_free">git_tag_free</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -714,58 +749,16 @@
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-37'>
-      <td class=docs>
-        <div class="pilwrap">
-          <a class="pilcrow" href="#section-37">&#182;</a>
-        </div>
-        <p>Create the oid and lookup the tree object just like the other objects.</p>
-      </td>
-      <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
-  <span class="n"><a name="git_tree_lookup-78" class="fnlink" href="../../#HEAD/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
-      </td>
-    </tr>
-    <tr id='section-38'>
-      <td class=docs>
-        <div class="pilwrap">
-          <a class="pilcrow" href="#section-38">&#182;</a>
-        </div>
-        <p>Getting the count of entries in the tree so you can iterate over them
-if you want to.</p>
-      </td>
-      <td class=code>
-        <div class='highlight'><pre>  <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-79" class="fnlink" href="../../#HEAD/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="cm">/* 2 */</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">cnt</span><span class="p">);</span>
-
-  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-81" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-82" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
-      </td>
-    </tr>
-    <tr id='section-39'>
-      <td class=docs>
-        <div class="pilwrap">
-          <a class="pilcrow" href="#section-39">&#182;</a>
-        </div>
-        <p>You can also access tree entries by name if you know the name of the
-entry you&#39;re looking for.</p>
-      </td>
-      <td class=code>
-        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-80" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
-  <span class="n"><a name="git_tree_entry_name-83" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
-      </td>
-    </tr>
     <tr id='section-40'>
       <td class=docs>
         <div class="pilwrap">
           <a class="pilcrow" href="#section-40">&#182;</a>
         </div>
-        <p>Once you have the entry object, you can access the content or subtree
-(or commit, in the case of submodules) that it points to.  You can also
-get the mode if you want.</p>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-84" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="cm">/* blob */</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-51" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-88" class="fnlink" href="../../#HEAD/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
       </td>
     </tr>
     <tr id='section-41'>
@@ -773,10 +766,53 @@
         <div class="pilwrap">
           <a class="pilcrow" href="#section-41">&#182;</a>
         </div>
-        <p>Remember to close the looked-up object once you are done using it</p>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#HEAD/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-91" class="fnlink" href="../../#HEAD/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="cm">/* 2 */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-93" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-94" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-42'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-42">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-92" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-95" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-43'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-43">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-96" class="fnlink" href="../../#HEAD/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="cm">/* blob */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-44'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-44">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object and tree once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-36" class="fnlink" href="../../#HEAD/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-90" class="fnlink" href="../../#HEAD/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -803,24 +839,35 @@
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
 
-  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-52" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
   <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#HEAD/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-43'>
+    <tr id='section-46'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-43">&#182;</a>
+          <a class="pilcrow" href="#section-46">&#182;</a>
         </div>
         <p>You can access a buffer with the raw contents of the blob directly.
 Note that this buffer may not be contain ASCII data for certain blobs
 (e.g. binary files): do not consider the buffer a NULL-terminated
-string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+string, and use the <code><a name="git_blob_rawsize-4" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
 size in bytes</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="cm">/* 8 */</span>
-  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="cm">/* &quot;content&quot; */</span>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-5" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="cm">/* 8 */</span>
+  <span class="n"><a name="git_blob_rawcontent-3" class="fnlink" href="../../#HEAD/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="cm">/* &quot;content&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>Free the blob after usage.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-2" class="fnlink" href="../../#HEAD/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -850,13 +897,13 @@
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
 
-  <span class="n"><a name="git_oid_fromstr-48" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+  <span class="n"><a name="git_oid_fromstr-53" class="fnlink" href="../../#HEAD/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-45'>
+    <tr id='section-49'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-45">&#182;</a>
+          <a class="pilcrow" href="#section-49">&#182;</a>
         </div>
         <p>To use the revwalker, create a new walker, tell it how you want to sort
 the output and then push one or more starting points onto the walker.
@@ -868,15 +915,15 @@
 of <code>branch1</code>.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-64" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
-  <span class="n"><a name="git_revwalk_sorting-67" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
-  <span class="n"><a name="git_revwalk_push-65" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-71" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-74" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-72" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-46'>
+    <tr id='section-50'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-46">&#182;</a>
+          <a class="pilcrow" href="#section-50">&#182;</a>
         </div>
         <p>Now that we have the starting point pushed onto the walker, we start
 asking for ancestors. It will return them in the sorting order we asked
@@ -885,22 +932,22 @@
 since the raw contents of the commit object will be cached in memory</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-66" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-73" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-8" class="fnlink" href="../../#HEAD/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
     <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
 
-    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
-    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#HEAD/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-17" class="fnlink" href="../../#HEAD/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-22" class="fnlink" href="../../#HEAD/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
     <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
 
-    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-13" class="fnlink" href="../../#HEAD/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
   <span class="p">}</span></pre></div>
       </td>
     </tr>
-    <tr id='section-47'>
+    <tr id='section-51'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-47">&#182;</a>
+          <a class="pilcrow" href="#section-51">&#182;</a>
         </div>
         <p>Like the other objects, be sure to free the revwalker when you&#39;re done
 to prevent memory leaks.  Also, make sure that the repository being
@@ -908,7 +955,7 @@
 result in undefined behavior</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-68" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-75" class="fnlink" href="../../#HEAD/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -931,10 +978,10 @@
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-49'>
+    <tr id='section-53'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-49">&#182;</a>
+          <a class="pilcrow" href="#section-53">&#182;</a>
         </div>
         <p>You can either open the index from the standard location in an open
 repository, as we&#39;re doing here, or you can open and manipulate any
@@ -942,13 +989,13 @@
 will be located and loaded from disk.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-63" class="fnlink" href="../../#HEAD/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-70" class="fnlink" href="../../#HEAD/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-50'>
+    <tr id='section-54'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-50">&#182;</a>
+          <a class="pilcrow" href="#section-54">&#182;</a>
         </div>
         <p>For each entry in the index, you can get a bunch of information
 including the SHA (oid), path and mode which map to the tree objects
@@ -958,16 +1005,16 @@
 the `git</em>index_entry` struct</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#HEAD/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-34" class="fnlink" href="../../#HEAD/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
   <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#HEAD/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-35" class="fnlink" href="../../#HEAD/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
 
     <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
     <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
     <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
   <span class="p">}</span>
 
-  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#HEAD/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="n"><a name="git_index_free-33" class="fnlink" href="../../#HEAD/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -986,18 +1033,15 @@
         <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
-  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
-  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span>
   <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span>
-  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-52'>
+    <tr id='section-56'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-52">&#182;</a>
+          <a class="pilcrow" href="#section-56">&#182;</a>
         </div>
         <p>Here we will implement something like <code>git for-each-ref</code> simply listing
 out all available references and the object SHA they resolve to.</p>
@@ -1006,29 +1050,34 @@
 one at a time and resolve them to the SHA, then print both values out.</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre>  <span class="n"><a name="git_reference_list-59" class="fnlink" href="../../#HEAD/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+        <div class='highlight'><pre>  <span class="n"><a name="git_reference_list-64" class="fnlink" href="../../#HEAD/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
 
   <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
-    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
-    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-    <span class="n"><a name="git_reference_lookup-55" class="fnlink" href="../../#HEAD/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+    <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">GIT_OID_HEX_ZERO</span><span class="p">;</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
 
-    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-58" class="fnlink" href="../../#HEAD/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-60" class="fnlink" href="../../#HEAD/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-63" class="fnlink" href="../../#HEAD/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
       <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
-        <span class="n"><a name="git_oid_fmt-54" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_reference_target-56" class="fnlink" href="../../#HEAD/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="n"><a name="git_oid_fmt-59" class="fnlink" href="../../#HEAD/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_reference_target-61" class="fnlink" href="../../#HEAD/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
         <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
         <span class="k">break</span><span class="p">;</span>
 
       <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
-        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-57" class="fnlink" href="../../#HEAD/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-62" class="fnlink" href="../../#HEAD/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
         <span class="k">break</span><span class="p">;</span>
       <span class="nl">default:</span>
         <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
         <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
     <span class="p">}</span>
+
+    <span class="n"><a name="git_reference_free-65" class="fnlink" href="../../#HEAD/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">ref</span><span class="p">);</span>
   <span class="p">}</span>
 
-  <span class="n"><a name="git_strarray_free-71" class="fnlink" href="../../#HEAD/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span>
+  <span class="n"><a name="git_strarray_free-80" class="fnlink" href="../../#HEAD/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
@@ -1043,33 +1092,47 @@
 in any of the accessible config file locations (system, global, local).</p>
       </td>
       <td class=code>
-        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">)</span>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">,</span> <span class="n">git_repository</span><span class="o">*</span> <span class="n">repo</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
   <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
-  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+  <span class="kt">int32_t</span> <span class="n">autocorrect</span><span class="p">;</span>
   <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span>
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">snap_cfg</span><span class="p">;</span>
 
   <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
       </td>
     </tr>
-    <tr id='section-54'>
+    <tr id='section-58'>
       <td class=docs>
         <div class="pilwrap">
-          <a class="pilcrow" href="#section-54">&#182;</a>
+          <a class="pilcrow" href="#section-58">&#182;</a>
         </div>
         <p>Open a config object so we can read global values from it.</p>
-
       </td>
       <td class=code>
         <div class='highlight'><pre>  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
-  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#HEAD/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-26" class="fnlink" href="../../#HEAD/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
 
-  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#HEAD/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_config_get_int32-29" class="fnlink" href="../../#HEAD/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">autocorrect</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">autocorrect</span><span class="p">);</span>
 
-  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#HEAD/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_repository_config_snapshot-68" class="fnlink" href="../../#HEAD/group/repository/git_repository_config_snapshot">git_repository_config_snapshot</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">snap_cfg</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;config snapshot&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_config_get_string-30" class="fnlink" href="../../#HEAD/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">snap_cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-59'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-59">&#182;</a>
+        </div>
+        <p>Remember to free the configurations after usage.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_config_free-27" class="fnlink" href="../../#HEAD/group/config/git_config_free">git_config_free</a></span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span>
+  <span class="n"><a name="git_config_free-28" class="fnlink" href="../../#HEAD/group/config/git_config_free">git_config_free</a></span><span class="p">(</span><span class="n">snap_cfg</span><span class="p">);</span>
 <span class="p">}</span></pre></div>
       </td>
     </tr>
diff --git a/ex/HEAD/network/clone.html b/ex/HEAD/network/clone.html
index 24f299e5..74452f2 100644
--- a/ex/HEAD/network/clone.html
+++ b/ex/HEAD/network/clone.html
@@ -110,7 +110,7 @@
 <span class="p">{</span>
   <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
 
-  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
   <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
   <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
 <span class="p">}</span>
diff --git a/ex/v0.24.3/add.html b/ex/v0.24.3/add.html
new file mode 100644
index 0000000..5a8db78
--- /dev/null
+++ b/ex/v0.24.3/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/blame.html b/ex/v0.24.3/blame.html
new file mode 100644
index 0000000..58cb4ab
--- /dev/null
+++ b/ex/v0.24.3/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.24.3/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.24.3/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.24.3/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/cat-file.html b/ex/v0.24.3/cat-file.html
new file mode 100644
index 0000000..2996b8c
--- /dev/null
+++ b/ex/v0.24.3/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.24.3/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.24.3/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.24.3/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.24.3/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.24.3/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.24.3/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.24.3/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/common.html b/ex/v0.24.3/common.html
new file mode 100644
index 0000000..15525ae
--- /dev/null
+++ b/ex/v0.24.3/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/describe.html b/ex/v0.24.3/describe.html
new file mode 100644
index 0000000..81f9222
--- /dev/null
+++ b/ex/v0.24.3/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.24.3/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.24.3/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.24.3/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/diff.html b/ex/v0.24.3/diff.html
new file mode 100644
index 0000000..34fc4a1
--- /dev/null
+++ b/ex/v0.24.3/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.3/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/for-each-ref.html b/ex/v0.24.3/for-each-ref.html
new file mode 100644
index 0000000..88477ed
--- /dev/null
+++ b/ex/v0.24.3/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/general.html b/ex/v0.24.3/general.html
new file mode 100644
index 0000000..476fb02
--- /dev/null
+++ b/ex/v0.24.3/general.html
@@ -0,0 +1,1123 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="http://progit.org/book/ch9-0.html">Chapter 9</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.24.3/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+       <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-58" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-40" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-48" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n"><a name="git_repository_odb-60" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-34" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-37" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-39" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.24.3/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-38" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-36" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-35" class="fnlink" href="../../#v0.24.3/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-28'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-28">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">ctime</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-29'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-29">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">ctime</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Don&#39;t forget to close the object to prevent memory leaks. You will have
+to do this for all the objects you open and parse.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-67" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-68" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-36'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-36">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-75" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+    <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+    <span class="n">repo</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+    <span class="n">author</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+    <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+    <span class="n">tree</span><span class="p">,</span>
+    <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tmessage</span><span class="p">,</span> <span class="o">*</span><span class="n">tname</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">ttype</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-70" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-42'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-42">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-71" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">tname</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-73" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="c1">// &quot;test&quot;</span>
+  <span class="n">ttype</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-72" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// GIT_OBJ_COMMIT (otype enum)</span>
+  <span class="n">tmessage</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-74" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// &quot;tag message\n&quot;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">tmessage</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-44'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-44">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">objt</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;2a741c18ac5ff082a7caaec6e74db3075a1906b5&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-76" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">size_t</span> <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-77" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="c1">// 3</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-79" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-80" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-78" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-81" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-48'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-48">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-82" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">objt</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="c1">// blob</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">objt</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-51'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-51">&#182;</a>
+        </div>
+        <p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="c1">// 8</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.24.3/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="c1">// &quot;content&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-55'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-55">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-62" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-65" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-63" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-56'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-56">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-64" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-57'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-57">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-66" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation">&#182;</a>
+        </div>
+        <h3>Index File Manipulation</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-59'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-59">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-60'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-60">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-61" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-61'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-61">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.24.3/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.24.3/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.24.3/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-63'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-63">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-64'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-64">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="n"><a name="git_reference_list-57" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-65'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-65">&#182;</a>
+        </div>
+        <p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-53" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-56" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+      <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_reference_target-54" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-55" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-69" class="fnlink" href="../../#v0.24.3/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-67'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-67">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-68'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-68">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.24.3/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.24.3/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.24.3/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-69'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-69">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-59" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/init.html b/ex/v0.24.3/init.html
new file mode 100644
index 0000000..a8695dc
--- /dev/null
+++ b/ex/v0.24.3/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.24.3/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.24.3/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/log.html b/ex/v0.24.3/log.html
new file mode 100644
index 0000000..ce3cd79
--- /dev/null
+++ b/ex/v0.24.3/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.24.3/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.24.3/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.24.3/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.24.3/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.24.3/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.24.3/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.24.3/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.24.3/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/clone.html b/ex/v0.24.3/network/clone.html
new file mode 100644
index 0000000..852fe9d
--- /dev/null
+++ b/ex/v0.24.3/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.24.3/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.3/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/common.html b/ex/v0.24.3/network/common.html
new file mode 100644
index 0000000..2d70e5d
--- /dev/null
+++ b/ex/v0.24.3/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/fetch.html b/ex/v0.24.3/network/fetch.html
new file mode 100644
index 0000000..e1667a1
--- /dev/null
+++ b/ex/v0.24.3/network/fetch.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">dl_data</span> <span class="n">data</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Figure out whether it&#39;s a named remote or a URL</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Set up the callbacks (only update_tips for now)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/git2.html b/ex/v0.24.3/network/git2.html
new file mode 100644
index 0000000..d9d9934
--- /dev/null
+++ b/ex/v0.24.3/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.24.3/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.3/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/index-pack.html b/ex/v0.24.3/network/index-pack.html
new file mode 100644
index 0000000..5e470e6
--- /dev/null
+++ b/ex/v0.24.3/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.24.3/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.24.3/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.24.3/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.24.3/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.24.3/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/network/ls-remote.html b/ex/v0.24.3/network/ls-remote.html
new file mode 100644
index 0000000..60f64e0
--- /dev/null
+++ b/ex/v0.24.3/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/remote.html b/ex/v0.24.3/remote.html
new file mode 100644
index 0000000..558d0d3
--- /dev/null
+++ b/ex/v0.24.3/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.3/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.24.3/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.24.3/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.24.3/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/rev-list.html b/ex/v0.24.3/rev-list.html
new file mode 100644
index 0000000..b204fae
--- /dev/null
+++ b/ex/v0.24.3/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/rev-parse.html b/ex/v0.24.3/rev-parse.html
new file mode 100644
index 0000000..7584803
--- /dev/null
+++ b/ex/v0.24.3/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.24.3/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.24.3/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.24.3/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/showindex.html b/ex/v0.24.3/showindex.html
new file mode 100644
index 0000000..a4061b6
--- /dev/null
+++ b/ex/v0.24.3/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/status.html b/ex/v0.24.3/status.html
new file mode 100644
index 0000000..da68fd2
--- /dev/null
+++ b/ex/v0.24.3/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.24.3/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.24.3/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.24.3/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.24.3/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.24.3/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.24.3/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.24.3/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.24.3/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.24.3/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.24.3/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.24.3/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.24.3/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.24.3/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.3/tag.html b/ex/v0.24.3/tag.html
new file mode 100644
index 0000000..693fd1c
--- /dev/null
+++ b/ex/v0.24.3/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.3">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.24.3/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.24.3/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.24.3/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.24.3/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.3/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.24.3/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.24.3/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.3/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.24.3/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.24.3/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.3/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/add.html b/ex/v0.24.4/add.html
new file mode 100644
index 0000000..4924f59
--- /dev/null
+++ b/ex/v0.24.4/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/blame.html b/ex/v0.24.4/blame.html
new file mode 100644
index 0000000..41d30a7
--- /dev/null
+++ b/ex/v0.24.4/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.24.4/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.24.4/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.24.4/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/cat-file.html b/ex/v0.24.4/cat-file.html
new file mode 100644
index 0000000..ce3baf4
--- /dev/null
+++ b/ex/v0.24.4/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.24.4/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.24.4/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.24.4/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/common.html b/ex/v0.24.4/common.html
new file mode 100644
index 0000000..5ef68fe
--- /dev/null
+++ b/ex/v0.24.4/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/describe.html b/ex/v0.24.4/describe.html
new file mode 100644
index 0000000..3f4cf67
--- /dev/null
+++ b/ex/v0.24.4/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.24.4/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.24.4/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.24.4/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/diff.html b/ex/v0.24.4/diff.html
new file mode 100644
index 0000000..09e7711
--- /dev/null
+++ b/ex/v0.24.4/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.4/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/for-each-ref.html b/ex/v0.24.4/for-each-ref.html
new file mode 100644
index 0000000..f0fe140
--- /dev/null
+++ b/ex/v0.24.4/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/general.html b/ex/v0.24.4/general.html
new file mode 100644
index 0000000..4501fc4
--- /dev/null
+++ b/ex/v0.24.4/general.html
@@ -0,0 +1,1078 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain">Chapter 10</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+
+<p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">out</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.24.4/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+      <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+
+<p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-60" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span>
+
+  <span class="n">oid_parsing</span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">object_database</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">commit_writing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">commit_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tag_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tree_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">blob_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">revwalking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">index_walking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">reference_listing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">config_files</span><span class="p">(</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-61" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+
+<p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+
+<p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+
+  <span class="n"><a name="git_repository_odb-62" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-35" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-38" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-40" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">object data: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-39" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">,</span> <span class="n">data</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-37" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-36" class="fnlink" href="../../#v0.24.4/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+
+<p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-69" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-70" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-25'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-25">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-77" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+      <span class="n">repo</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+      <span class="n">author</span><span class="p">,</span>
+      <span class="n">cmtter</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+      <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+      <span class="n">tree</span><span class="p">,</span>
+      <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-27'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-27">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+
+<p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">time</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">time</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">Committer: %s (%s)</span><span class="se">\n</span><span class="s">Date: %s</span><span class="se">\n</span><span class="s">Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">ctime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">time</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-53" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+
+<p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">type</span><span class="p">;</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-72" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-73" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">name</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-75" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;test&quot; */</span>
+  <span class="n">type</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-74" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="cm">/* GIT_OBJ_COMMIT (otype enum) */</span>
+  <span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-76" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;tag message\n&quot; */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Name: %s</span><span class="se">\n</span><span class="s">Tag Type: %s</span><span class="se">\n</span><span class="s">Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">name</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-34" class="fnlink" href="../../#v0.24.4/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">cnt</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-78" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-79" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="cm">/* 2 */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-81" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-82" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-39'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-39">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-80" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-83" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-84" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="cm">/* blob */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+
+<p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-43'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-43">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="cm">/* 8 */</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.24.4/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="cm">/* &quot;content&quot; */</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+
+<p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-48" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-64" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-67" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-65" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-66" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-68" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation_*'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation_*">&#182;</a>
+        </div>
+        <h3>Index File Manipulation *</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-63" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-50'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-50">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.24.4/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.24.4/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.24.4/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+
+<p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_reference_list-59" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-55" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-58" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+      <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+        <span class="n"><a name="git_oid_fmt-54" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_reference_target-56" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-57" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="k">break</span><span class="p">;</span>
+      <span class="nl">default:</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-71" class="fnlink" href="../../#v0.24.4/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.24.4/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.24.4/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.24.4/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/init.html b/ex/v0.24.4/init.html
new file mode 100644
index 0000000..2a58304
--- /dev/null
+++ b/ex/v0.24.4/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.24.4/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.24.4/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/log.html b/ex/v0.24.4/log.html
new file mode 100644
index 0000000..a7c5df6
--- /dev/null
+++ b/ex/v0.24.4/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.24.4/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.24.4/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.24.4/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.24.4/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.24.4/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.24.4/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.24.4/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.24.4/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/clone.html b/ex/v0.24.4/network/clone.html
new file mode 100644
index 0000000..3e38e20
--- /dev/null
+++ b/ex/v0.24.4/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.24.4/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.4/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/common.html b/ex/v0.24.4/network/common.html
new file mode 100644
index 0000000..a6b1874
--- /dev/null
+++ b/ex/v0.24.4/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/fetch.html b/ex/v0.24.4/network/fetch.html
new file mode 100644
index 0000000..71b7a2a
--- /dev/null
+++ b/ex/v0.24.4/network/fetch.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Figure out whether it&#39;s a named remote or a URL */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span>
+
+  <span class="cm">/* Set up the callbacks (only update_tips for now) */</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/git2.html b/ex/v0.24.4/network/git2.html
new file mode 100644
index 0000000..4df88f0
--- /dev/null
+++ b/ex/v0.24.4/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.24.4/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.4/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/index-pack.html b/ex/v0.24.4/network/index-pack.html
new file mode 100644
index 0000000..791c5f7
--- /dev/null
+++ b/ex/v0.24.4/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.24.4/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.24.4/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.24.4/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.24.4/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.24.4/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/network/ls-remote.html b/ex/v0.24.4/network/ls-remote.html
new file mode 100644
index 0000000..6cac96c
--- /dev/null
+++ b/ex/v0.24.4/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/remote.html b/ex/v0.24.4/remote.html
new file mode 100644
index 0000000..83ea566
--- /dev/null
+++ b/ex/v0.24.4/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.4/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.24.4/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.24.4/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.24.4/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/rev-list.html b/ex/v0.24.4/rev-list.html
new file mode 100644
index 0000000..0753ae3
--- /dev/null
+++ b/ex/v0.24.4/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/rev-parse.html b/ex/v0.24.4/rev-parse.html
new file mode 100644
index 0000000..7545c0a
--- /dev/null
+++ b/ex/v0.24.4/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.24.4/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.24.4/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.24.4/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/showindex.html b/ex/v0.24.4/showindex.html
new file mode 100644
index 0000000..c929fc1
--- /dev/null
+++ b/ex/v0.24.4/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/status.html b/ex/v0.24.4/status.html
new file mode 100644
index 0000000..06270da
--- /dev/null
+++ b/ex/v0.24.4/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.24.4/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.24.4/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.24.4/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.24.4/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.24.4/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.24.4/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.24.4/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.24.4/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.24.4/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.24.4/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.24.4/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.24.4/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.24.4/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.4/tag.html b/ex/v0.24.4/tag.html
new file mode 100644
index 0000000..4ed147b
--- /dev/null
+++ b/ex/v0.24.4/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.4">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.24.4/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.24.4/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.24.4/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.24.4/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.4/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.24.4/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.24.4/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.4/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.24.4/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.24.4/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.4/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/add.html b/ex/v0.24.5/add.html
new file mode 100644
index 0000000..24f8f5f
--- /dev/null
+++ b/ex/v0.24.5/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/blame.html b/ex/v0.24.5/blame.html
new file mode 100644
index 0000000..b271459
--- /dev/null
+++ b/ex/v0.24.5/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.24.5/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.24.5/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.24.5/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/cat-file.html b/ex/v0.24.5/cat-file.html
new file mode 100644
index 0000000..a664644
--- /dev/null
+++ b/ex/v0.24.5/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.24.5/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.24.5/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.24.5/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.24.5/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.24.5/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.24.5/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.24.5/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/common.html b/ex/v0.24.5/common.html
new file mode 100644
index 0000000..c733328
--- /dev/null
+++ b/ex/v0.24.5/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/describe.html b/ex/v0.24.5/describe.html
new file mode 100644
index 0000000..b03a273
--- /dev/null
+++ b/ex/v0.24.5/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.24.5/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.24.5/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.24.5/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/diff.html b/ex/v0.24.5/diff.html
new file mode 100644
index 0000000..47c2761
--- /dev/null
+++ b/ex/v0.24.5/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.5/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/for-each-ref.html b/ex/v0.24.5/for-each-ref.html
new file mode 100644
index 0000000..a33288d
--- /dev/null
+++ b/ex/v0.24.5/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/general.html b/ex/v0.24.5/general.html
new file mode 100644
index 0000000..cc5a4c8
--- /dev/null
+++ b/ex/v0.24.5/general.html
@@ -0,0 +1,1123 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="http://progit.org/book/ch9-0.html">Chapter 9</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.24.5/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+       <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-58" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-40" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-48" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n"><a name="git_repository_odb-60" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-34" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-37" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-39" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.24.5/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-38" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-36" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-35" class="fnlink" href="../../#v0.24.5/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-28'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-28">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">ctime</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-29'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-29">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">ctime</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Don&#39;t forget to close the object to prevent memory leaks. You will have
+to do this for all the objects you open and parse.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-67" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-68" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-36'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-36">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-75" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+    <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+    <span class="n">repo</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+    <span class="n">author</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+    <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+    <span class="n">tree</span><span class="p">,</span>
+    <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tmessage</span><span class="p">,</span> <span class="o">*</span><span class="n">tname</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">ttype</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-70" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-42'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-42">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-71" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">tname</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-73" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="c1">// &quot;test&quot;</span>
+  <span class="n">ttype</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-72" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// GIT_OBJ_COMMIT (otype enum)</span>
+  <span class="n">tmessage</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-74" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// &quot;tag message\n&quot;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">tmessage</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-44'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-44">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">objt</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;2a741c18ac5ff082a7caaec6e74db3075a1906b5&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-76" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">size_t</span> <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-77" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="c1">// 3</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-79" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-80" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-78" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-81" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-48'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-48">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-82" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">objt</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="c1">// blob</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">objt</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-51'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-51">&#182;</a>
+        </div>
+        <p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="c1">// 8</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.24.5/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="c1">// &quot;content&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-55'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-55">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-62" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-65" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-63" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-56'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-56">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-64" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-57'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-57">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-66" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation">&#182;</a>
+        </div>
+        <h3>Index File Manipulation</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-59'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-59">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-60'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-60">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-61" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-61'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-61">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.24.5/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.24.5/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.24.5/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-63'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-63">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-64'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-64">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="n"><a name="git_reference_list-57" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-65'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-65">&#182;</a>
+        </div>
+        <p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-53" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-56" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+      <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_reference_target-54" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-55" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-69" class="fnlink" href="../../#v0.24.5/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-67'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-67">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-68'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-68">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.24.5/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.24.5/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.24.5/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-69'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-69">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-59" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/init.html b/ex/v0.24.5/init.html
new file mode 100644
index 0000000..3239b34
--- /dev/null
+++ b/ex/v0.24.5/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.24.5/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.24.5/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/log.html b/ex/v0.24.5/log.html
new file mode 100644
index 0000000..9544c54
--- /dev/null
+++ b/ex/v0.24.5/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.24.5/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.24.5/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.24.5/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.24.5/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.24.5/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.24.5/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.24.5/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.24.5/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/clone.html b/ex/v0.24.5/network/clone.html
new file mode 100644
index 0000000..b0c0663
--- /dev/null
+++ b/ex/v0.24.5/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.24.5/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.5/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/common.html b/ex/v0.24.5/network/common.html
new file mode 100644
index 0000000..b4475cf
--- /dev/null
+++ b/ex/v0.24.5/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/fetch.html b/ex/v0.24.5/network/fetch.html
new file mode 100644
index 0000000..42cb69c
--- /dev/null
+++ b/ex/v0.24.5/network/fetch.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">dl_data</span> <span class="n">data</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Figure out whether it&#39;s a named remote or a URL</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Set up the callbacks (only update_tips for now)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/git2.html b/ex/v0.24.5/network/git2.html
new file mode 100644
index 0000000..19c67fa
--- /dev/null
+++ b/ex/v0.24.5/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.24.5/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.5/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/index-pack.html b/ex/v0.24.5/network/index-pack.html
new file mode 100644
index 0000000..9a2f118
--- /dev/null
+++ b/ex/v0.24.5/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.24.5/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.24.5/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.24.5/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.24.5/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.24.5/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/network/ls-remote.html b/ex/v0.24.5/network/ls-remote.html
new file mode 100644
index 0000000..7ea869a
--- /dev/null
+++ b/ex/v0.24.5/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/remote.html b/ex/v0.24.5/remote.html
new file mode 100644
index 0000000..e08696e
--- /dev/null
+++ b/ex/v0.24.5/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.5/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.24.5/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.24.5/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.24.5/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/rev-list.html b/ex/v0.24.5/rev-list.html
new file mode 100644
index 0000000..ba0d5b2
--- /dev/null
+++ b/ex/v0.24.5/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/rev-parse.html b/ex/v0.24.5/rev-parse.html
new file mode 100644
index 0000000..08e1f1d
--- /dev/null
+++ b/ex/v0.24.5/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.24.5/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.24.5/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.24.5/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/showindex.html b/ex/v0.24.5/showindex.html
new file mode 100644
index 0000000..cacf997
--- /dev/null
+++ b/ex/v0.24.5/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/status.html b/ex/v0.24.5/status.html
new file mode 100644
index 0000000..c26d538
--- /dev/null
+++ b/ex/v0.24.5/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.24.5/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.24.5/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.24.5/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.24.5/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.24.5/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.24.5/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.24.5/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.24.5/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.24.5/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.24.5/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.24.5/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.24.5/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.24.5/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.5/tag.html b/ex/v0.24.5/tag.html
new file mode 100644
index 0000000..7da6841
--- /dev/null
+++ b/ex/v0.24.5/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.5">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.24.5/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.24.5/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.24.5/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.24.5/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.5/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.24.5/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.24.5/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.5/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.24.5/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.24.5/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.5/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/add.html b/ex/v0.24.6/add.html
new file mode 100644
index 0000000..87fc34e
--- /dev/null
+++ b/ex/v0.24.6/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/blame.html b/ex/v0.24.6/blame.html
new file mode 100644
index 0000000..4c324cf
--- /dev/null
+++ b/ex/v0.24.6/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.24.6/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.24.6/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.24.6/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/cat-file.html b/ex/v0.24.6/cat-file.html
new file mode 100644
index 0000000..8f4c8f1
--- /dev/null
+++ b/ex/v0.24.6/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.24.6/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.24.6/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.24.6/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.24.6/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.24.6/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.24.6/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.24.6/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/common.html b/ex/v0.24.6/common.html
new file mode 100644
index 0000000..1fa5835
--- /dev/null
+++ b/ex/v0.24.6/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/describe.html b/ex/v0.24.6/describe.html
new file mode 100644
index 0000000..2787aa4
--- /dev/null
+++ b/ex/v0.24.6/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.24.6/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.24.6/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.24.6/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/diff.html b/ex/v0.24.6/diff.html
new file mode 100644
index 0000000..9bde4ce
--- /dev/null
+++ b/ex/v0.24.6/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.6/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/for-each-ref.html b/ex/v0.24.6/for-each-ref.html
new file mode 100644
index 0000000..bd43e7d
--- /dev/null
+++ b/ex/v0.24.6/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/general.html b/ex/v0.24.6/general.html
new file mode 100644
index 0000000..b968cc1
--- /dev/null
+++ b/ex/v0.24.6/general.html
@@ -0,0 +1,1123 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="http://progit.org/book/ch9-0.html">Chapter 9</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.24.6/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+       <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-58" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-40" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-48" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n"><a name="git_repository_odb-60" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-34" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-37" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-39" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.24.6/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-38" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-36" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-35" class="fnlink" href="../../#v0.24.6/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-28'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-28">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">ctime</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-29'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-29">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">ctime</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Don&#39;t forget to close the object to prevent memory leaks. You will have
+to do this for all the objects you open and parse.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-67" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-68" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-36'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-36">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-75" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+    <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+    <span class="n">repo</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+    <span class="n">author</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="p">,</span>
+    <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+    <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+    <span class="n">tree</span><span class="p">,</span>
+    <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tmessage</span><span class="p">,</span> <span class="o">*</span><span class="n">tname</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">ttype</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-70" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-42'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-42">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-71" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">tname</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-73" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="c1">// &quot;test&quot;</span>
+  <span class="n">ttype</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-72" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// GIT_OBJ_COMMIT (otype enum)</span>
+  <span class="n">tmessage</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-74" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="c1">// &quot;tag message\n&quot;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">tmessage</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-44'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-44">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">objt</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;2a741c18ac5ff082a7caaec6e74db3075a1906b5&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-76" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">size_t</span> <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-77" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="c1">// 3</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-79" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-80" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-78" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-81" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="c1">// &quot;hello.c&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-48'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-48">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-82" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">objt</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="c1">// blob</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">objt</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-51'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-51">&#182;</a>
+        </div>
+        <p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="c1">// 8</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.24.6/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="c1">// &quot;content&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-55'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-55">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-62" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-65" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-63" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-56'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-56">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-64" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-57'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-57">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-66" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation">&#182;</a>
+        </div>
+        <h3>Index File Manipulation</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-59'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-59">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-60'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-60">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-61" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-61'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-61">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.24.6/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.24.6/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.24.6/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-63'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-63">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-64'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-64">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="n"><a name="git_reference_list-57" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-65'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-65">&#182;</a>
+        </div>
+        <p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-53" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-56" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+      <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n"><a name="git_reference_target-54" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-55" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-69" class="fnlink" href="../../#v0.24.6/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-67'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-67">&#182;</a>
+        </div>
+        <p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-68'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-68">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.24.6/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.24.6/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.24.6/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-69'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-69">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-59" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/init.html b/ex/v0.24.6/init.html
new file mode 100644
index 0000000..e075a11
--- /dev/null
+++ b/ex/v0.24.6/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.24.6/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.24.6/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/log.html b/ex/v0.24.6/log.html
new file mode 100644
index 0000000..648acf2
--- /dev/null
+++ b/ex/v0.24.6/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.24.6/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.24.6/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.24.6/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.24.6/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.24.6/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.24.6/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.24.6/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.24.6/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/clone.html b/ex/v0.24.6/network/clone.html
new file mode 100644
index 0000000..bae8d2a
--- /dev/null
+++ b/ex/v0.24.6/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.24.6/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.6/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/common.html b/ex/v0.24.6/network/common.html
new file mode 100644
index 0000000..ec3a7b3
--- /dev/null
+++ b/ex/v0.24.6/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/fetch.html b/ex/v0.24.6/network/fetch.html
new file mode 100644
index 0000000..4ce15c7
--- /dev/null
+++ b/ex/v0.24.6/network/fetch.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">dl_data</span> <span class="n">data</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Figure out whether it&#39;s a named remote or a URL</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Set up the callbacks (only update_tips for now)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/git2.html b/ex/v0.24.6/network/git2.html
new file mode 100644
index 0000000..66cca97
--- /dev/null
+++ b/ex/v0.24.6/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.24.6/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.24.6/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/index-pack.html b/ex/v0.24.6/network/index-pack.html
new file mode 100644
index 0000000..7a1675a
--- /dev/null
+++ b/ex/v0.24.6/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.24.6/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.24.6/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.24.6/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.24.6/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.24.6/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/network/ls-remote.html b/ex/v0.24.6/network/ls-remote.html
new file mode 100644
index 0000000..800f897
--- /dev/null
+++ b/ex/v0.24.6/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/remote.html b/ex/v0.24.6/remote.html
new file mode 100644
index 0000000..396f58e
--- /dev/null
+++ b/ex/v0.24.6/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.6/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.24.6/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.24.6/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.24.6/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/rev-list.html b/ex/v0.24.6/rev-list.html
new file mode 100644
index 0000000..3f11614
--- /dev/null
+++ b/ex/v0.24.6/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/rev-parse.html b/ex/v0.24.6/rev-parse.html
new file mode 100644
index 0000000..94ba499
--- /dev/null
+++ b/ex/v0.24.6/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.24.6/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.24.6/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.24.6/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/showindex.html b/ex/v0.24.6/showindex.html
new file mode 100644
index 0000000..7422463
--- /dev/null
+++ b/ex/v0.24.6/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/status.html b/ex/v0.24.6/status.html
new file mode 100644
index 0000000..1a8d013
--- /dev/null
+++ b/ex/v0.24.6/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.24.6/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.24.6/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.24.6/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.24.6/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.24.6/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.24.6/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.24.6/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.24.6/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.24.6/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.24.6/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.24.6/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.24.6/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.24.6/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.24.6/tag.html b/ex/v0.24.6/tag.html
new file mode 100644
index 0000000..d7635d8
--- /dev/null
+++ b/ex/v0.24.6/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.24.6">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.24.6/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.24.6/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.24.6/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.24.6/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.24.6/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.24.6/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.24.6/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.24.6/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.24.6/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.24.6/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.24.6/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/add.html b/ex/v0.25.0/add.html
new file mode 100644
index 0000000..cf38615
--- /dev/null
+++ b/ex/v0.25.0/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/blame.html b/ex/v0.25.0/blame.html
new file mode 100644
index 0000000..3a51053
--- /dev/null
+++ b/ex/v0.25.0/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.25.0/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.25.0/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.25.0/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/cat-file.html b/ex/v0.25.0/cat-file.html
new file mode 100644
index 0000000..6c81ea6
--- /dev/null
+++ b/ex/v0.25.0/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.25.0/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.25.0/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.25.0/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/common.html b/ex/v0.25.0/common.html
new file mode 100644
index 0000000..3eb78e0
--- /dev/null
+++ b/ex/v0.25.0/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/describe.html b/ex/v0.25.0/describe.html
new file mode 100644
index 0000000..47c2c03
--- /dev/null
+++ b/ex/v0.25.0/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.25.0/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.25.0/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.25.0/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/diff.html b/ex/v0.25.0/diff.html
new file mode 100644
index 0000000..823500a
--- /dev/null
+++ b/ex/v0.25.0/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.0/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/for-each-ref.html b/ex/v0.25.0/for-each-ref.html
new file mode 100644
index 0000000..ea624fb
--- /dev/null
+++ b/ex/v0.25.0/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/general.html b/ex/v0.25.0/general.html
new file mode 100644
index 0000000..30d5613
--- /dev/null
+++ b/ex/v0.25.0/general.html
@@ -0,0 +1,1078 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain">Chapter 10</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+
+<p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">out</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.25.0/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+      <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+
+<p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-60" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span>
+
+  <span class="n">oid_parsing</span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">object_database</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">commit_writing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">commit_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tag_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tree_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">blob_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">revwalking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">index_walking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">reference_listing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">config_files</span><span class="p">(</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-61" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+
+<p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+
+<p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+
+  <span class="n"><a name="git_repository_odb-62" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-35" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-38" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-40" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">object data: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-39" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">,</span> <span class="n">data</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-37" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-36" class="fnlink" href="../../#v0.25.0/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+
+<p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-69" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-70" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-25'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-25">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-77" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+      <span class="n">repo</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+      <span class="n">author</span><span class="p">,</span>
+      <span class="n">cmtter</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+      <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+      <span class="n">tree</span><span class="p">,</span>
+      <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-27'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-27">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+
+<p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">time</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">time</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">Committer: %s (%s)</span><span class="se">\n</span><span class="s">Date: %s</span><span class="se">\n</span><span class="s">Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">ctime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">time</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-53" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+
+<p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">type</span><span class="p">;</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-72" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-73" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">name</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-75" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;test&quot; */</span>
+  <span class="n">type</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-74" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="cm">/* GIT_OBJ_COMMIT (otype enum) */</span>
+  <span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-76" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;tag message\n&quot; */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Name: %s</span><span class="se">\n</span><span class="s">Tag Type: %s</span><span class="se">\n</span><span class="s">Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">name</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-34" class="fnlink" href="../../#v0.25.0/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">cnt</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-78" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-79" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="cm">/* 2 */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-81" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-82" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-39'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-39">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-80" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-83" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-84" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="cm">/* blob */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+
+<p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-43'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-43">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="cm">/* 8 */</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.25.0/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="cm">/* &quot;content&quot; */</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+
+<p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-48" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-64" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-67" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-65" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-66" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-68" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation_*'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation_*">&#182;</a>
+        </div>
+        <h3>Index File Manipulation *</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-63" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-50'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-50">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.25.0/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.25.0/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.25.0/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+
+<p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_reference_list-59" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-55" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-58" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+      <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+        <span class="n"><a name="git_oid_fmt-54" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_reference_target-56" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-57" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="k">break</span><span class="p">;</span>
+      <span class="nl">default:</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-71" class="fnlink" href="../../#v0.25.0/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.25.0/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.25.0/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.25.0/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/init.html b/ex/v0.25.0/init.html
new file mode 100644
index 0000000..ae127c3
--- /dev/null
+++ b/ex/v0.25.0/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.25.0/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.25.0/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/log.html b/ex/v0.25.0/log.html
new file mode 100644
index 0000000..23bfedf
--- /dev/null
+++ b/ex/v0.25.0/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.25.0/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.25.0/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.25.0/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.25.0/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.25.0/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.25.0/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.25.0/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.25.0/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/clone.html b/ex/v0.25.0/network/clone.html
new file mode 100644
index 0000000..baa6390
--- /dev/null
+++ b/ex/v0.25.0/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.25.0/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.25.0/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/common.html b/ex/v0.25.0/network/common.html
new file mode 100644
index 0000000..e3c0c60
--- /dev/null
+++ b/ex/v0.25.0/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/fetch.html b/ex/v0.25.0/network/fetch.html
new file mode 100644
index 0000000..d1076f9
--- /dev/null
+++ b/ex/v0.25.0/network/fetch.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Figure out whether it&#39;s a named remote or a URL */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span>
+
+  <span class="cm">/* Set up the callbacks (only update_tips for now) */</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/git2.html b/ex/v0.25.0/network/git2.html
new file mode 100644
index 0000000..722e134
--- /dev/null
+++ b/ex/v0.25.0/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.25.0/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.25.0/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/index-pack.html b/ex/v0.25.0/network/index-pack.html
new file mode 100644
index 0000000..eddf089
--- /dev/null
+++ b/ex/v0.25.0/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.25.0/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.25.0/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.25.0/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.25.0/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.25.0/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/network/ls-remote.html b/ex/v0.25.0/network/ls-remote.html
new file mode 100644
index 0000000..f775de3
--- /dev/null
+++ b/ex/v0.25.0/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/remote.html b/ex/v0.25.0/remote.html
new file mode 100644
index 0000000..49fdb1f
--- /dev/null
+++ b/ex/v0.25.0/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.0/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.25.0/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.25.0/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.25.0/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/rev-list.html b/ex/v0.25.0/rev-list.html
new file mode 100644
index 0000000..80afd51
--- /dev/null
+++ b/ex/v0.25.0/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/rev-parse.html b/ex/v0.25.0/rev-parse.html
new file mode 100644
index 0000000..2189f33
--- /dev/null
+++ b/ex/v0.25.0/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.25.0/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.25.0/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.25.0/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/showindex.html b/ex/v0.25.0/showindex.html
new file mode 100644
index 0000000..5bfa2a8
--- /dev/null
+++ b/ex/v0.25.0/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/status.html b/ex/v0.25.0/status.html
new file mode 100644
index 0000000..fc03436
--- /dev/null
+++ b/ex/v0.25.0/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.25.0/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.25.0/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.25.0/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.25.0/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.25.0/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.25.0/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.25.0/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.25.0/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.25.0/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.25.0/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.25.0/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.25.0/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.25.0/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.0/tag.html b/ex/v0.25.0/tag.html
new file mode 100644
index 0000000..0539309
--- /dev/null
+++ b/ex/v0.25.0/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.0">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.25.0/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.25.0/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.25.0/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.25.0/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.0/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.25.0/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.25.0/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.25.0/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.25.0/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.25.0/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.25.0/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/add.html b/ex/v0.25.1/add.html
new file mode 100644
index 0000000..08be67f
--- /dev/null
+++ b/ex/v0.25.1/add.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>add.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>add.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/blame.html b/ex/v0.25.1/blame.html
new file mode 100644
index 0000000..1b49c09
--- /dev/null
+++ b/ex/v0.25.1/blame.html
@@ -0,0 +1,343 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>blame.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>blame.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;blame&quot; example - shows how to use the blame API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="cp">#ifdef _MSC_VER</span>
+<span class="cp">#define snprintf sprintf_s</span>
+<span class="cp">#define strcasecmp strcmpi</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates how to invoke the libgit2 blame API to roughly
+simulate the output of <code>git blame</code> and a few of its command line arguments.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">commitspec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">C</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">M</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">start_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">end_line</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">F</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="n">break_on_null_hunk</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">rawsize</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rawdata</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_revspec</span> <span class="n">revspec</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_blame_options</span> <span class="n">blameopts</span> <span class="o">=</span> <span class="n">GIT_BLAME_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_blame</span> <span class="o">*</span><span class="n">blame</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-8" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">M</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">C</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">F</span><span class="p">)</span> <span class="n">blameopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_BLAME_FIRST_PARENT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Open the repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-24" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>The commit range comes in &quot;commitish&quot; form. Use the rev-parse API to
+nail down the end points.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-27" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revspec</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">commitspec</span><span class="p">),</span> <span class="s">&quot;Couldn&#39;t parse commit spec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-20" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-10" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-14" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_cpy-21" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">oldest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-11" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+      <span class="n"><a name="git_oid_cpy-22" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_cpy">git_oid_cpy</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">,</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+      <span class="n"><a name="git_object_free-15" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+      <span class="n"><a name="git_object_free-16" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">revspec</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Run the blame.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blame_file-2" class="fnlink" href="../../#v0.25.1/group/blame/git_blame_file">git_blame_file</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blame</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">),</span> <span class="s">&quot;Blame error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Get the raw data inside the blob for output. We use the
+<code>commitish:path/to/file.txt</code> format to find it.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-23" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">))</span>
+    <span class="n">strcpy</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n"><a name="git_oid_tostr-18" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">spec</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">blameopts</span><span class="p">.</span><span class="n">newest_commit</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;:&quot;</span><span class="p">);</span>
+  <span class="n">strcat</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-26" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Object lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_blob_lookup-4" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="s">&quot;Blob lookup error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+
+  <span class="n">rawdata</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawcontent-6" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n">rawsize</span> <span class="o">=</span> <span class="n"><a name="git_blob_rawsize-7" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Produce the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">while</span> <span class="p">(</span><span class="n">i</span> <span class="o">&lt;</span> <span class="n">rawsize</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">eol</span> <span class="o">=</span> <span class="n">memchr</span><span class="p">(</span><span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">,</span> <span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="n">rawsize</span> <span class="o">-</span> <span class="n">i</span><span class="p">);</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="mi">10</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="k">const</span> <span class="n">git_blame_hunk</span> <span class="o">*</span><span class="n">hunk</span> <span class="o">=</span> <span class="n"><a name="git_blame_get_hunk_byline-1" class="fnlink" href="../../#v0.25.1/group/blame/git_blame_get_hunk_byline">git_blame_get_hunk_byline</a></span><span class="p">(</span><span class="n">blame</span><span class="p">,</span> <span class="n">line</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">break_on_null_hunk</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">hunk</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">hunk</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">sig</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+      <span class="n">break_on_null_hunk</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      
+      <span class="n"><a name="git_oid_tostr-19" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_commit_id</span><span class="p">);</span>
+      <span class="n">snprintf</span><span class="p">(</span><span class="n">sig</span><span class="p">,</span> <span class="mi">30</span><span class="p">,</span> <span class="s">&quot;%s &lt;%s&gt;&quot;</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">hunk</span><span class="o">-&gt;</span><span class="n">final_signature</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s ( %-30s %3d) %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+          <span class="n">oid</span><span class="p">,</span>
+          <span class="n">sig</span><span class="p">,</span>
+          <span class="n">line</span><span class="p">,</span>
+          <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">-</span> <span class="n">i</span><span class="p">),</span>
+          <span class="n">rawdata</span> <span class="o">+</span> <span class="n">i</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">rawdata</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+    <span class="n">line</span><span class="o">++</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_blob_free-5" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_free">git_blob_free</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span>
+  <span class="n"><a name="git_blame_free-3" class="fnlink" href="../../#v0.25.1/group/blame/git_blame_free">git_blame_free</a></span><span class="p">(</span><span class="n">blame</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-25" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-9" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Tell the user how to make this thing work.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: blame [options] [&lt;commit range&gt;] &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   &lt;commit range&gt;      example: `HEAD~10..HEAD`, or `1234abcd`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -L &lt;n,m&gt;            process only line range n-m, counting from 1</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -M                  find line moves within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -C                  find line copies within and across files</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;   -F                  follow only the first parent commits</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse the arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">i</span><span class="o">&lt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span>
+      <span class="k">while</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="o">++</span><span class="n">i</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="mi">3</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Invalid argument set&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">bare_args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">M</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">C</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-F&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">F</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcasecmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-L&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">i</span><span class="o">++</span><span class="p">;</span> <span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">&gt;=</span> <span class="n">argc</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Not enough arguments to -L&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n">sscanf</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;%d,%d&quot;</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">start_line</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">end_line</span><span class="p">)</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="s">&quot;-L format error&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="p">{</span>
+      <span class="cm">/* commit range */</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Only one commit spec allowed&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Handle the bare arguments */</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Please specify a path&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;commitspec&gt; &lt;path&gt; */</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="p">}</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="p">{</span>
+    <span class="cm">/* &lt;oldcommit&gt; &lt;newcommit&gt; &lt;path&gt; */</span>
+    <span class="kt">char</span> <span class="n">spec</span><span class="p">[</span><span class="mi">128</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+    <span class="n">sprintf</span><span class="p">(</span><span class="n">spec</span><span class="p">,</span> <span class="s">&quot;%s..%s&quot;</span><span class="p">,</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">bare_args</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">commitspec</span> <span class="o">=</span> <span class="n">spec</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/cat-file.html b/ex/v0.25.1/cat-file.html
new file mode 100644
index 0000000..d7a0035
--- /dev/null
+++ b/ex/v0.25.1/cat-file.html
@@ -0,0 +1,357 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>cat-file.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>cat-file.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;cat-file&quot; example - shows how to print data from the ODB</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_signature</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">header</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sig</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s &lt;%s&gt; %ld %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">header</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">.</span><span class="n">time</span><span class="p">,</span>
+       <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Printing out a blob is simple, get the contents and print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_blob</span><span class="p">(</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="cm">/* ? Does this need crlf filtering? */</span>
+  <span class="n">fwrite</span><span class="p">(</span><span class="n"><a name="git_blob_rawcontent-1" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-2" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Show each entry with its type, id and attributes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tree</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_tree_entrycount-41" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">te</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">te</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-42" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n"><a name="git_oid_tostr-26" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tree_entry_id-44" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_id">git_tree_entry_id</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%06o %s %s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_tree_entry_filemode-46" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_filemode">git_tree_entry_filemode</a></span><span class="p">(</span><span class="n">te</span><span class="p">),</span>
+      <span class="n"><a name="git_object_type2string-18" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tree_entry_type-45" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_type">git_tree_entry_type</a></span><span class="p">(</span><span class="n">te</span><span class="p">)),</span>
+      <span class="n">oidstr</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-43" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">te</span><span class="p">));</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Commits and tags have a few interesting fields in their header.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_commit</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">max_i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-27" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_tree_id-7" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree_id">git_commit_tree_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+
+  <span class="n">max_i</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-8" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">max_i</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-28" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_commit_parent_id-9" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;parent %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;author&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_author-6" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;committer&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_committer-5" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_message-3" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_commit_message-4" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_tag</span><span class="p">(</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_oid_tostr-29" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_tag_target_id-35" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_target_id">git_tag_target_id</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;type %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-19" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_tag_target_type-36" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">)));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tag %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-37" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+  <span class="n">print_signature</span><span class="p">(</span><span class="s">&quot;tagger&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_tagger-38" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_tagger">git_tag_tagger</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tag_message-39" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">))</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_message-40" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+<span class="p">}</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">SHOW_TYPE</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">SHOW_SIZE</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">SHOW_NONE</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+  <span class="n">SHOW_PRETTY</span> <span class="o">=</span> <span class="mi">4</span>
+<span class="p">};</span>
+
+<span class="cm">/* Forward declarations for option-parsing helper */</span>
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">action</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="n"><a name="git_libgit2_init-10" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-31" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-34" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Could not resolve&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">rev</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oidstr</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+    <span class="n"><a name="git_oid_tostr-30" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">oidstr</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oidstr</span><span class="p">),</span> <span class="n"><a name="git_object_id-12" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s %s</span><span class="se">\n</span><span class="s">--</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_object_type2string-20" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-14" class="fnlink" href="../../#v0.25.1/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span> <span class="n">oidstr</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">action</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">case</span> <span class="n">SHOW_TYPE</span>:
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-21" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n"><a name="git_object_type-15" class="fnlink" href="../../#v0.25.1/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)));</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_SIZE</span>: <span class="p">{</span>
+    <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+    <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">odbobj</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_odb-33" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span> <span class="s">&quot;Could not open ODB&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_odb_read-23" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odbobj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n"><a name="git_object_id-13" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Could not find obj&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-25" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">));</span>
+
+    <span class="n"><a name="git_odb_object_free-24" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">odbobj</span><span class="p">);</span>
+    <span class="n"><a name="git_odb_free-22" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_free">git_odb_free</a></span><span class="p">(</span><span class="n">odb</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_NONE</span>:
+    <span class="cm">/* just want return result */</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">SHOW_PRETTY</span>:
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-16" class="fnlink" href="../../#v0.25.1/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_BLOB</span>:
+      <span class="n">show_blob</span><span class="p">((</span><span class="k">const</span> <span class="n">git_blob</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">show_commit</span><span class="p">((</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TREE</span>:
+      <span class="n">show_tree</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tree</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">show_tag</span><span class="p">((</span><span class="k">const</span> <span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span><span class="n">obj</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;unknown %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oidstr</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-17" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-32" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-11" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Print out usage information</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: cat-file (-t | -s | -e | -p) [-v] [-q] &quot;</span>
+      <span class="s">&quot;[-h|--help] [--git-dir=&lt;dir&gt;] &lt;object&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Parse the command-line options taken from git</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one rev should be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-t&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_TYPE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_SIZE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-e&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">=</span> <span class="n">SHOW_PRETTY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--help&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-h&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">action</span> <span class="o">||</span> <span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">rev</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/common.html b/ex/v0.25.1/common.html
new file mode 100644
index 0000000..0956ff2
--- /dev/null
+++ b/ex/v0.25.1/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/describe.html b/ex/v0.25.1/describe.html
new file mode 100644
index 0000000..763cbd6
--- /dev/null
+++ b/ex/v0.25.1/describe.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>describe.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>describe.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;describe&quot; example - shows how to describe commits</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;assert.h&gt;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git describe</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Describe HEAD with default options (<code>describe</code>)</li>
+<li>Describe specified revision (<code>describe master~2</code>)</li>
+<li>Describe specified revisions (<code>describe master~2 HEAD~3</code>)</li>
+<li>Describe HEAD with dirty state suffix (<code>describe --dirty=*</code>)</li>
+<li>Describe consider all refs (<code>describe --all master</code>)</li>
+<li>Describe consider lightweight tags (<code>describe --tags temp-tag</code>)</li>
+<li>Describe show non-default abbreviated size (<code>describe --abbrev=10</code>)</li>
+<li>Describe always output the long format if matches a tag (<code>describe --long v1.0</code>)</li>
+<li>Describe consider only tags of specified pattern (<code>describe --match v*-release</code>)</li>
+<li>Describe show the fallback result (<code>describe --always</code>)</li>
+<li>Describe follow only the first parent commit (<code>describe --first-parent</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>describe_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">commits</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">commit_count</span><span class="p">;</span>
+  <span class="n">git_describe_options</span> <span class="n">describe_options</span><span class="p">;</span>
+  <span class="n">git_describe_format_options</span> <span class="n">format_options</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">describe_options</span><span class="p">;</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="o">*</span><span class="nf">xrealloc</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">oldp</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">newsz</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">realloc</span><span class="p">(</span><span class="n">oldp</span><span class="p">,</span> <span class="n">newsz</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Cannot allocate memory, exiting.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">opts_add_commit</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">sz</span><span class="p">;</span>
+
+  <span class="n">assert</span><span class="p">(</span><span class="n">opts</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">sz</span> <span class="o">=</span> <span class="o">++</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">*</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="n">xrealloc</span><span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">,</span> <span class="n">sz</span><span class="p">);</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">commit</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe_single</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">rev</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_describe_result</span> <span class="o">*</span><span class="n">describe_result</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  
+  <span class="k">if</span> <span class="p">(</span><span class="n">rev</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-8" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">rev</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_commit-1" class="fnlink" href="../../#v0.25.1/group/describe/git_describe_commit">git_describe_commit</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_workdir-2" class="fnlink" href="../../#v0.25.1/group/describe/git_describe_workdir">git_describe_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">describe_result</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to describe workdir&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_describe_format-3" class="fnlink" href="../../#v0.25.1/group/describe/git_describe_format">git_describe_format</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="n">describe_result</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">),</span>
+      <span class="s">&quot;Failed to format describe rev&quot;</span><span class="p">,</span> <span class="n">rev</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">do_describe</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+  <span class="p">{</span>
+    <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span>
+      <span class="n">do_describe_single</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help describe`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Parse command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="n">curr</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--all&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_ALL</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--tags&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">describe_strategy</span> <span class="o">=</span> <span class="n">GIT_DESCRIBE_TAGS</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--exact-match&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">always_use_long_format</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--always&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">show_commit_oid_as_fallback</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;--first-parent&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">only_follow_first_parent</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">optional_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dirty&quot;</span><span class="p">,</span> <span class="s">&quot;-dirty&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">abbreviated_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">((</span><span class="kt">int</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">max_candidates_tags</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--candidates&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">.</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--match&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">print_usage</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">)</span>
+      <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;--dirty is incompatible with commit-ishes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span> <span class="o">||</span> <span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">.</span><span class="n">dirty_suffix</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
+      <span class="n">opts_add_commit</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize describe_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">describe_options_init</span><span class="p">(</span><span class="n">describe_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commits</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">commit_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_describe_init_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">describe_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_OPTIONS_VERSION</span><span class="p">);</span>
+  <span class="n">git_describe_init_format_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">format_options</span><span class="p">,</span> <span class="n">GIT_DESCRIBE_FORMAT_OPTIONS_VERSION</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">describe_options</span> <span class="n">opts</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-4" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-6" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">describe_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">do_describe</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-7" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-5" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/diff.html b/ex/v0.25.1/diff.html
new file mode 100644
index 0000000..d7187e9
--- /dev/null
+++ b/ex/v0.25.1/diff.html
@@ -0,0 +1,476 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>diff.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>diff.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;diff&quot; example - shows how to use the diff API</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 diff APIs to
+create <code>git_diff</code> objects and display them, emulating a number of
+core Git <code>diff</code> command line options.</p>
+
+<p>This covers on a portion of the core Git diff options and doesn&#39;t
+have particularly good error handling, but it should show most of
+the core libgit2 diff APIs, including various types of diffs and
+how to do renaming detection and patch formatting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">colors</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[m&quot;</span><span class="p">,</span> <span class="cm">/* reset */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[1m&quot;</span><span class="p">,</span> <span class="cm">/* bold */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[31m&quot;</span><span class="p">,</span> <span class="cm">/* red */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[32m&quot;</span><span class="p">,</span> <span class="cm">/* green */</span>
+  <span class="s">&quot;</span><span class="se">\033</span><span class="s">[36m&quot;</span> <span class="cm">/* cyan */</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">OUTPUT_DIFF</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">0</span><span class="p">),</span>
+  <span class="n">OUTPUT_STAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">1</span><span class="p">),</span>
+  <span class="n">OUTPUT_SHORTSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">2</span><span class="p">),</span>
+  <span class="n">OUTPUT_NUMSTAT</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">3</span><span class="p">),</span>
+  <span class="n">OUTPUT_SUMMARY</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="mi">4</span><span class="p">)</span>
+<span class="p">};</span>
+
+<span class="k">enum</span> <span class="p">{</span>
+  <span class="n">CACHE_NORMAL</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">CACHE_ONLY</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">CACHE_NONE</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>The &#39;opts&#39; struct captures all the various parsed command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span><span class="p">;</span>
+  <span class="n">git_diff_find_options</span> <span class="n">findopts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">color</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">cache</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">output</span><span class="p">;</span>
+  <span class="kt">git_diff_format_t</span> <span class="n">format</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish1</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">treeish2</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>These functions are implemented at the end</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_hunk</span><span class="o">*</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_diff_line</span><span class="o">*</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">t1</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">t2</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span>
+    <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">,</span> <span class="n">GIT_DIFF_FIND_OPTIONS_INIT</span><span class="p">,</span>
+    <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;.&quot;</span>
+  <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-13" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-15" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Possible argument patterns:</p>
+
+<ul>
+<li>&lt;sha1&gt; &lt;sha2&gt;</li>
+<li>&lt;sha1&gt; --cached</li>
+<li>&lt;sha1&gt;</li>
+<li>--cached</li>
+<li>--nocache (don&#39;t use index data in diff at all)</li>
+<li>nothing</li>
+</ul>
+
+<p>Currently ranged arguments like &lt;sha1&gt;..&lt;sha2&gt; and &lt;sha1&gt;...&lt;sha2&gt;
+are not supported in this example</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish1</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">)</span>
+    <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t2</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">treeish2</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">t1</span> <span class="o">&amp;&amp;</span> <span class="n">t2</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_tree-3" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="n">t2</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff trees&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">!=</span> <span class="n">CACHE_NORMAL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">t1</span><span class="p">)</span>
+      <span class="n">treeish_to_tree</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t1</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">cache</span> <span class="o">==</span> <span class="n">CACHE_NONE</span><span class="p">)</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_workdir-6" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_workdir">git_diff_tree_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_diff_tree_to_index-4" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_index">git_diff_tree_to_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;diff tree to index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">t1</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_tree_to_workdir_with_index-7" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_workdir_with_index">git_diff_tree_to_workdir_with_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">t1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff tree to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_index_to_workdir-5" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_index_to_workdir">git_diff_index_to_workdir</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">diffopts</span><span class="p">),</span>
+      <span class="s">&quot;diff index to working directory&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Apply rename and copy detection if requested.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_DIFF_FIND_ALL</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_find_similar-8" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_find_similar">git_diff_find_similar</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">findopts</span><span class="p">),</span>
+      <span class="s">&quot;finding renames and copies&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Generate simple output using libgit2 display helper.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">output</span><span class="p">)</span>
+    <span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">!=</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span>
+    <span class="n">diff_print_stats</span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">o</span><span class="p">.</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_DIFF</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span>
+      <span class="n"><a name="git_diff_print-9" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">,</span> <span class="n">color_printer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">color</span><span class="p">),</span>
+      <span class="s">&quot;displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Cleanup before exiting.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_diff_free-2" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-17" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t1</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-18" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">t2</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-16" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-14" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: diff [&lt;tree-oid&gt; [&lt;tree-oid&gt;]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>This implements very rudimentary colorized output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">color_printer</span><span class="p">(</span>
+  <span class="k">const</span> <span class="n">git_diff_delta</span> <span class="o">*</span><span class="n">delta</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_hunk</span> <span class="o">*</span><span class="n">hunk</span><span class="p">,</span>
+  <span class="k">const</span> <span class="n">git_diff_line</span> <span class="o">*</span><span class="n">line</span><span class="p">,</span>
+  <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">data</span><span class="p">,</span> <span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">delta</span><span class="p">;</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">hunk</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">switch</span> <span class="p">(</span><span class="n">line</span><span class="o">-&gt;</span><span class="n">origin</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADDITION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DELETION</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_ADD_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_DEL_EOFNL</span>: <span class="n">color</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_FILE_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_DIFF_LINE_HUNK_HDR</span>:  <span class="n">color</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span> <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">color</span> <span class="o">!=</span> <span class="o">*</span><span class="n">last_color</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">last_color</span> <span class="o">==</span> <span class="mi">1</span> <span class="o">||</span> <span class="n">color</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="n">fputs</span><span class="p">(</span><span class="n">colors</span><span class="p">[</span><span class="n">color</span><span class="p">],</span> <span class="n">stdout</span><span class="p">);</span>
+      <span class="o">*</span><span class="n">last_color</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="n">diff_output</span><span class="p">(</span><span class="n">delta</span><span class="p">,</span> <span class="n">hunk</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Parse arguments as copied from git-diff.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish1</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">treeish2</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Only one or two tree identifiers can be provided&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-p&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-u&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patch&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_DIFF</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--cached&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--nocache&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">cache</span> <span class="o">=</span> <span class="n">CACHE_NONE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-only&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_ONLY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--name-status&quot;</span><span class="p">)</span> <span class="o">||</span>
+        <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=name-status&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_NAME_STATUS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--raw&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=raw&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--format=diff-index&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">GIT_DIFF_FORMAT_RAW</span><span class="p">;</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span> <span class="o">=</span> <span class="mi">40</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--no-color&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">color</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-R&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_REVERSE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--text&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FORCE_TEXT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-at-eol&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_EOL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-space-change&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE_CHANGE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-w&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-all-space&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_IGNORE_WHITESPACE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--patience&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_PATIENCE</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--minimal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_MINIMAL</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--stat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_STAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--numstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shortstat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--summary&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">|=</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-M&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">rename_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-renames&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_RENAMES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-C&quot;</span><span class="p">)</span> <span class="o">||</span>
+      <span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">copy_threshold</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--find-copies&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--find-copies-harder&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-B&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="n">is_prefixed</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--break-rewrites&quot;</span><span class="p">))</span>
+      <span class="cm">/* TODO: parse thresholds */</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">findopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_DIFF_FIND_REWRITES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-U&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">context_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--unified&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint32_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">interhunk_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--inter-hunk-context&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_uint16_arg</span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">id_abbrev</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--abbrev&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">old_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--src-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">new_prefix</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--dst-prefix&quot;</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+      <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Unknown command line argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Display diff output with &quot;--stat&quot;, &quot;--numstat&quot;, or &quot;--shortstat&quot;</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">diff_print_stats</span><span class="p">(</span><span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_diff_stats</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">b</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="kt">git_diff_stats_format_t</span> <span class="n">format</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_get_stats-10" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_get_stats">git_diff_get_stats</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="n">diff</span><span class="p">),</span> <span class="s">&quot;generating stats for diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_STAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_FULL</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SHORTSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_SHORT</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_NUMSTAT</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_NUMBER</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">output</span> <span class="o">&amp;</span> <span class="n">OUTPUT_SUMMARY</span><span class="p">)</span>
+    <span class="n">format</span> <span class="o">|=</span> <span class="n">GIT_DIFF_STATS_INCLUDE_SUMMARY</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_stats_to_buf-11" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_stats_to_buf">git_diff_stats_to_buf</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">stats</span><span class="p">,</span> <span class="n">format</span><span class="p">,</span> <span class="mi">80</span><span class="p">),</span> <span class="s">&quot;formatting stats&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">fputs</span><span class="p">(</span><span class="n">b</span><span class="p">.</span><span class="n">ptr</span><span class="p">,</span> <span class="n">stdout</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.1/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_diff_stats_free-12" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_stats_free">git_diff_stats_free</a></span><span class="p">(</span><span class="n">stats</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/for-each-ref.html b/ex/v0.25.1/for-each-ref.html
new file mode 100644
index 0000000..60c157a
--- /dev/null
+++ b/ex/v0.25.1/for-each-ref.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>for-each-ref.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>for-each-ref.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/general.html b/ex/v0.25.1/general.html
new file mode 100644
index 0000000..797c88a
--- /dev/null
+++ b/ex/v0.25.1/general.html
@@ -0,0 +1,1078 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>general.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>general.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;general&quot; example - shows basic libgit2 concepts</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p><a href="http://libgit2.github.com"><strong>libgit2</strong></a> is a portable, pure C implementation of the Git core
+methods provided as a re-entrant linkable library with a solid API,
+allowing you to write native speed custom Git applications in any
+language which supports C bindings.</p>
+
+<p>This file is an example of using that API in a real, compilable C file.
+As the API is updated, this file will be updated to demonstrate the new
+functionality.</p>
+
+<p>If you&#39;re trying to write something in C using <a href="http://libgit2.github.com">libgit2</a>, you should
+also check out the generated <a href="http://libgit2.github.com/libgit2">API documentation</a>. We try to link to
+the relevant sections of the API docs in each section in this file.</p>
+
+<p><strong>libgit2</strong> (for the most part) only implements the core plumbing
+functions, not really the higher level porcelain stuff. For a primer on
+Git Internals that you will need to know to work with Git at this level,
+check out <a href="https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain">Chapter 10</a> of the Pro Git book.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Includes'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Includes">&#182;</a>
+        </div>
+        <h3>Includes</h3>
+
+<p>Including the <code>git2.h</code> header will include all the other libgit2 headers
+that you need.  It should be the only thing you need to include in order
+to compile properly and get all the libgit2 API.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">out</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Almost all libgit2 functions return 0 on success or negative on error.
+This is not production quality error checking, but should be sufficient
+as an example.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">check_error</span><span class="p">(</span><span class="kt">int</span> <span class="n">error_code</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">action</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="giterr_last-27" class="fnlink" href="../../#v0.25.1/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error_code</span><span class="p">)</span>
+    <span class="k">return</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Error %d %s - %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error_code</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span>
+      <span class="p">(</span><span class="n">error</span> <span class="o">&amp;&amp;</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">)</span> <span class="o">?</span> <span class="n">error</span><span class="o">-&gt;</span><span class="n">message</span> <span class="o">:</span> <span class="s">&quot;???&quot;</span><span class="p">);</span>
+
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span> <span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Initialize the library, this will set up any global state which libgit2 needs
+including threading and crypto</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_libgit2_init-28" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Opening_the_Repository'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Opening_the_Repository">&#182;</a>
+        </div>
+        <h3>Opening the Repository</h3>
+
+<p>There are a couple of methods for opening a repository, this being the
+simplest.  There are also <a href="http://libgit2.github.com/libgit2/#HEAD/group/repository">methods</a> for specifying the index file
+and work tree locations, here we assume they are in the normal places.</p>
+
+<p>(Try running this program against tests/resources/testrepo.git.)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">repo_path</span> <span class="o">=</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="o">?</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">:</span> <span class="s">&quot;/opt/libgit2-test/.git&quot;</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-60" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;opening repository&quot;</span><span class="p">);</span>
+
+  <span class="n">oid_parsing</span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">object_database</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">commit_writing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">commit_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tag_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">tree_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">blob_parsing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">revwalking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">index_walking</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">reference_listing</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n">config_files</span><span class="p">(</span><span class="n">repo_path</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Finally, when you&#39;re done with the repository, you can free it as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_free-61" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-SHA-1_Value_Conversions'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-SHA-1_Value_Conversions">&#182;</a>
+        </div>
+        <h3>SHA-1 Value Conversions</h3>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">oid_parsing</span><span class="p">(</span><span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="kt">char</span> <span class="n">hex</span><span class="p">[]</span> <span class="o">=</span> <span class="s">&quot;4a202b346bb0fb0db7eff3cffeb3c70babbd2045&quot;</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;*Hex to Raw*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>For our first example, we will convert a 40 character hex value to the
+20 byte raw SHA1 value.</p>
+
+<p>The <code>git_oid</code> is the structure that keeps the SHA value. We will use
+this throughout the example for storing the value of the current SHA
+key we&#39;re working with.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-41" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">hex</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Once we&#39;ve converted the string into the oid value, we can get the raw
+value of the SHA by accessing <code>oid.id</code></p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Next we will convert the 20 byte raw SHA1 value to a human readable 40
+char hex value.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw to Hex*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">out</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-49" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>If you have a oid, you can easily get the hex value of the SHA as well.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-50" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;SHA hex string: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">out</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Working_with_the_Object_Database'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Working_with_the_Object_Database">&#182;</a>
+        </div>
+        <h3>Working with the Object Database</h3>
+
+<p><strong>libgit2</strong> provides <a href="http://libgit2.github.com/libgit2/#HEAD/group/odb">direct access</a> to the object database.  The
+object database is where the actual objects are stored in Git. For
+working with raw objects, we&#39;ll need to get this structure from the
+repository.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">object_database</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">oid</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+  <span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="n">data</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str_type</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_odb_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_odb</span> <span class="o">*</span><span class="n">odb</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">otype</span><span class="p">;</span>
+
+  <span class="n"><a name="git_repository_odb-62" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_odb">git_repository_odb</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">odb</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Reading'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Reading">&#182;</a>
+        </div>
+        <h4>Raw Object Reading</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Read*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>We can read raw objects directly from the object database if we have
+the oid (SHA) of the object.  This allows us to access objects without
+knowing their type and inspect the raw bytes unparsed.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_odb_read-35" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_read">git_odb_read</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;finding object in repository&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>A raw object only has three properties - the type (commit, blob, tree
+or tag), the size of the raw data and the raw, unparsed data itself.
+For a commit or tag, that raw data is human readable plain ASCII
+text. For a blob it is just file contents, so it could be text or
+binary data. For a tree it is a special binary format, so it&#39;s unlikely
+to be hugely helpful as a raw object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">data</span> <span class="o">=</span> <span class="p">(</span><span class="k">const</span> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n"><a name="git_odb_object_data-38" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_data">git_odb_object_data</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="n">otype</span> <span class="o">=</span> <span class="n"><a name="git_odb_object_type-40" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_type">git_odb_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>We provide methods to convert from the object type which is an enum, to
+a string representation of that value (and vice-versa).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">str_type</span> <span class="o">=</span> <span class="n"><a name="git_object_type2string-33" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">otype</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;object length and type: %d, %s</span><span class="se">\n</span><span class="s">object data: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_odb_object_size-39" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_size">git_odb_object_size</a></span><span class="p">(</span><span class="n">obj</span><span class="p">),</span>
+      <span class="n">str_type</span><span class="p">,</span> <span class="n">data</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>For proper memory management, close the object when you are done with
+it or it will leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_object_free-37" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_object_free">git_odb_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Raw_Object_Writing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Raw_Object_Writing">&#182;</a>
+        </div>
+        <h4>Raw Object Writing</h4>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Raw Object Write*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>You can also write raw object data to Git. This is pretty cool because
+it gives you direct access to the key/value properties of Git.  Here
+we&#39;ll write a new blob object that just contains a simple string.
+Notice that we have to specify the object type as the <code>git_otype</code> enum.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_odb_write-36" class="fnlink" href="../../#v0.25.1/group/odb/git_odb_write">git_odb_write</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="n">odb</span><span class="p">,</span> <span class="s">&quot;test data&quot;</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="s">&quot;test data&quot;</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">GIT_OBJ_BLOB</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Now that we&#39;ve written the object, we can check out what SHA1 was
+generated when the object was written to our database.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-51" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n">oid</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Written Object: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Writing_Commits'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Writing_Commits">&#182;</a>
+        </div>
+        <h4>Writing Commits</h4>
+
+<p>libgit2 provides a couple of methods to create commit objects easily as
+well. There are four different create signatures, we&#39;ll just show one
+of them here.  You can read about the other ones in the <a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">commit API
+docs</a>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_writing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">parent_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Writing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Creating signatures for an authoring identity and time is simple.  You
+will need to do this to specify who created a commit and when.  Default
+values for the name and email should be found in the <code>user.name</code> and
+<code>user.email</code> configuration options.  See the <code>config</code> section of this
+example file to see how to access config values.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_signature_new-69" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">author</span><span class="p">,</span>
+      <span class="s">&quot;Scott Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;schacon@gmail.com&quot;</span><span class="p">,</span> <span class="mi">123456789</span><span class="p">,</span> <span class="mi">60</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_new-70" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_new">git_signature_new</a></span><span class="p">((</span><span class="n">git_signature</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">cmtter</span><span class="p">,</span>
+      <span class="s">&quot;Scott A Chacon&quot;</span><span class="p">,</span> <span class="s">&quot;scott@github.com&quot;</span><span class="p">,</span> <span class="mi">987654321</span><span class="p">,</span> <span class="mi">90</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-25'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-25">&#182;</a>
+        </div>
+        <p>Commit objects need a tree to point to and optionally one or more
+parents.  Here we&#39;re creating oid objects to create the commit with,
+but you can also use</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-42" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-77" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">);</span>
+  <span class="n"><a name="git_oid_fromstr-43" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent_id</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_lookup-5" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">parent_id</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-26'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-26">&#182;</a>
+        </div>
+        <p>Here we actually create the commit object with a single call with all
+the values we need to create the commit.  The SHA key is written to the
+<code>commit_id</code> variable here.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_commit_create_v-23" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="cm">/* out id */</span>
+      <span class="n">repo</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* do not update the HEAD */</span>
+      <span class="n">author</span><span class="p">,</span>
+      <span class="n">cmtter</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="cm">/* use default message encoding */</span>
+      <span class="s">&quot;example commit&quot;</span><span class="p">,</span>
+      <span class="n">tree</span><span class="p">,</span>
+      <span class="mi">1</span><span class="p">,</span> <span class="n">parent</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-27'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-27">&#182;</a>
+        </div>
+        <p>Now we can take a look at the commit SHA we&#39;ve generated.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fmt-52" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;New Commit: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Object_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Object_Parsing">&#182;</a>
+        </div>
+        <h3>Object Parsing</h3>
+
+<p>libgit2 has methods to parse every object type in Git so you don&#39;t have
+to work directly with the raw data. This is much faster and simpler
+than trying to deal with the raw data yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Commit_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Commit_Parsing">&#182;</a>
+        </div>
+        <h4>Commit Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/commit">Parsing commit objects</a> is simple and gives you access to all the
+data in the commit - the author (name, email, datetime), committer
+(same), tree, message, encoding and parent(s).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">commit_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">author</span><span class="p">,</span> <span class="o">*</span><span class="n">cmtter</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">parents</span><span class="p">,</span> <span class="n">p</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">time</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Commit Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-44" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;8496071c1b46c854b31185ea97743be6a8774479&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-6" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-30'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-30">&#182;</a>
+        </div>
+        <p>Each of the properties of the commit object are accessible via methods,
+including commonly needed variations, such as <code><a name="git_commit_time-16" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_time">git_commit_time</a></code> which
+returns the author time and <code><a name="git_commit_message-13" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></code> which gives you the
+commit message (as a NUL-terminated string).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">message</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-14" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">author</span>   <span class="o">=</span> <span class="n"><a name="git_commit_author-19" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">cmtter</span>   <span class="o">=</span> <span class="n"><a name="git_commit_committer-18" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="n">time</span>    <span class="o">=</span> <span class="n"><a name="git_commit_time-17" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_time">git_commit_time</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-31'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-31">&#182;</a>
+        </div>
+        <p>The author and committer methods return [git<em>signature] structures,
+which give you name, email and <code>when</code>, which is a `git</em>time` structure,
+giving you a timestamp and timezone offset.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s (%s)</span><span class="se">\n</span><span class="s">Committer: %s (%s)</span><span class="se">\n</span><span class="s">Date: %s</span><span class="se">\n</span><span class="s">Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">author</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">author</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">cmtter</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span>
+    <span class="n">ctime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">time</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-32'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-32">&#182;</a>
+        </div>
+        <p>Commits can have zero or more parents. The first (root) commit will
+have no parents, most commits will have one (i.e. the commit it was
+based on) and merge commits will have two or more.  Commits can
+technically have any number, though it&#39;s rare to have more than two.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">parents</span>  <span class="o">=</span> <span class="n"><a name="git_commit_parentcount-21" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class="n">p</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span><span class="n">p</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="n">p</span><span class="p">);</span>
+    <span class="n"><a name="git_oid_fmt-53" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_commit_id-12" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">parent</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Parent: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+    <span class="n"><a name="git_commit_free-8" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_commit_free-9" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tag_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tag_Parsing">&#182;</a>
+        </div>
+        <h4>Tag Parsing</h4>
+
+<p>You can parse and create tags with the <a href="http://libgit2.github.com/libgit2/#HEAD/group/tag">tag management API</a>, which
+functions very similarly to the commit lookup, parsing and creation
+methods, since the objects themselves are very similar.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">;</span>
+  <span class="n">git_otype</span> <span class="n">type</span><span class="p">;</span>
+  <span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tag Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-34'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-34">&#182;</a>
+        </div>
+        <p>We create an oid for the tag object if we know the SHA and look it up
+the same way that we would a commit (or any other object).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-45" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;b25fa35b38051e4ae45d4222e795f9df2e43f1d1&quot;</span><span class="p">);</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_tag_lookup-72" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_lookup">git_tag_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up tag&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-35'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-35">&#182;</a>
+        </div>
+        <p>Now that we have the tag object, we can extract the information it
+generally contains: the target (usually a commit object), the type of
+the target object (usually &#39;commit&#39;), the name (&#39;v1.0&#39;), the tagger (a
+git_signature - name, email, timestamp), and the tag message.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tag_target-73" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_target">git_tag_target</a></span><span class="p">((</span><span class="n">git_object</span> <span class="o">**</span><span class="p">)</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">tag</span><span class="p">);</span>
+  <span class="n">name</span> <span class="o">=</span> <span class="n"><a name="git_tag_name-75" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;test&quot; */</span>
+  <span class="n">type</span> <span class="o">=</span> <span class="n"><a name="git_tag_target_type-74" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_target_type">git_tag_target_type</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>	<span class="cm">/* GIT_OBJ_COMMIT (otype enum) */</span>
+  <span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-76" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>		<span class="cm">/* &quot;tag message\n&quot; */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Tag Name: %s</span><span class="se">\n</span><span class="s">Tag Type: %s</span><span class="se">\n</span><span class="s">Tag Message: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n">name</span><span class="p">,</span> <span class="n"><a name="git_object_type2string-34" class="fnlink" href="../../#v0.25.1/group/object/git_object_type2string">git_object_type2string</a></span><span class="p">(</span><span class="n">type</span><span class="p">),</span> <span class="n">message</span><span class="p">);</span>
+
+  <span class="n"><a name="git_commit_free-10" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Tree_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Tree_Parsing">&#182;</a>
+        </div>
+        <h4>Tree Parsing</h4>
+
+<p><a href="http://libgit2.github.com/libgit2/#HEAD/group/tree">Tree parsing</a> is a bit different than the other objects, in that
+we have a subtype which is the tree entry.  This is not an actual
+object type in Git, but a useful structure for parsing and traversing
+tree entries.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tree_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_tree_entry</span> <span class="o">*</span><span class="n">entry</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">cnt</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Tree Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-37'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-37">&#182;</a>
+        </div>
+        <p>Create the oid and lookup the tree object just like the other objects.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_oid_fromstr-46" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;f60079018b664e4e79329a7ef9559c8d9e0378d1&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_lookup-78" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-38'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-38">&#182;</a>
+        </div>
+        <p>Getting the count of entries in the tree so you can iterate over them
+if you want to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">cnt</span> <span class="o">=</span> <span class="n"><a name="git_tree_entrycount-79" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entrycount">git_tree_entrycount</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> <span class="cm">/* 2 */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;tree entries: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">cnt</span><span class="p">);</span>
+
+  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byindex-81" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_byindex">git_tree_entry_byindex</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Entry name: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="git_tree_entry_name-82" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">));</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-39'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-39">&#182;</a>
+        </div>
+        <p>You can also access tree entries by name if you know the name of the
+entry you&#39;re looking for.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">entry</span> <span class="o">=</span> <span class="n"><a name="git_tree_entry_byname-80" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_byname">git_tree_entry_byname</a></span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="s">&quot;README&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_entry_name-83" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_name">git_tree_entry_name</a></span><span class="p">(</span><span class="n">entry</span><span class="p">);</span> <span class="cm">/* &quot;README&quot; */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-40'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-40">&#182;</a>
+        </div>
+        <p>Once you have the entry object, you can access the content or subtree
+(or commit, in the case of submodules) that it points to.  You can also
+get the mode if you want.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_entry_to_object-84" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_entry_to_object">git_tree_entry_to_object</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">entry</span><span class="p">);</span> <span class="cm">/* blob */</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-41'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-41">&#182;</a>
+        </div>
+        <p>Remember to close the looked-up object once you are done using it</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_object_free-32" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Blob_Parsing'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Blob_Parsing">&#182;</a>
+        </div>
+        <h4>Blob Parsing</h4>
+
+<p>The last object type is the simplest and requires the least parsing
+help. Blobs are just file contents and can contain anything, there is
+no structure to it. The main advantage to using the <a href="http://libgit2.github.com/libgit2/#HEAD/group/blob">simple blob
+api</a> is that when you&#39;re creating blobs you don&#39;t have to calculate
+the size of the content.  There is also a helper for reading a file
+from disk and writing it to the db and getting the oid back so you
+don&#39;t have to do all those steps yourself.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">blob_parsing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_blob</span> <span class="o">*</span><span class="n">blob</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Blob Parsing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-47" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;1385f264afb75a56a5bec74243be9b367ba4ca08&quot;</span><span class="p">);</span>
+  <span class="n"><a name="git_blob_lookup-1" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_lookup">git_blob_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">blob</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-43'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-43">&#182;</a>
+        </div>
+        <p>You can access a buffer with the raw contents of the blob directly.
+Note that this buffer may not be contain ASCII data for certain blobs
+(e.g. binary files): do not consider the buffer a NULL-terminated
+string, and use the <code><a name="git_blob_rawsize-3" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawsize">git_blob_rawsize</a></code> attribute to find out its exact
+size in bytes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Blob Size: %ld</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n"><a name="git_blob_rawsize-4" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawsize">git_blob_rawsize</a></span><span class="p">(</span><span class="n">blob</span><span class="p">));</span> <span class="cm">/* 8 */</span>
+  <span class="n"><a name="git_blob_rawcontent-2" class="fnlink" href="../../#v0.25.1/group/blob/git_blob_rawcontent">git_blob_rawcontent</a></span><span class="p">(</span><span class="n">blob</span><span class="p">);</span> <span class="cm">/* &quot;content&quot; */</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Revwalking'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Revwalking">&#182;</a>
+        </div>
+        <h3>Revwalking</h3>
+
+<p>The libgit2 <a href="http://libgit2.github.com/libgit2/#HEAD/group/revwalk">revision walking api</a> provides methods to traverse the
+directed graph created by the parent pointers of the commit objects.
+Since all commits point back to the commit that came directly before
+them, you can walk this parentage as a graph and find all the commits
+that were ancestors of (reachable from) a given starting point.  This
+can allow you to create <code>git log</code> type functionality.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">revwalking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">cauth</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">cmsg</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walk</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">wcommit</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Revwalking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fromstr-48" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fromstr">git_oid_fromstr</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="s">&quot;5b5b025afb0b4c913b4c338a42934a3863bf3644&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-45'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-45">&#182;</a>
+        </div>
+        <p>To use the revwalker, create a new walker, tell it how you want to sort
+the output and then push one or more starting points onto the walker.
+If you want to emulate the output of <code>git log</code> you would push the SHA
+of the commit that HEAD points to into the walker and then start
+traversing them.  You can also &#39;hide&#39; commits that you want to stop at
+or not see any of their ancestors.  So if you want to emulate <code>git log
+branch1..branch2</code>, you would push the oid of <code>branch2</code> and hide the oid
+of <code>branch1</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_new-64" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">walk</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_sorting-67" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span> <span class="o">|</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_push-65" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">walk</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-46'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-46">&#182;</a>
+        </div>
+        <p>Now that we have the starting point pushed onto the walker, we start
+asking for ancestors. It will return them in the sorting order we asked
+for as commit oids.  We can then lookup and parse the committed pointed
+at by the returned OID; note that this operation is specially fast
+since the raw contents of the commit object will be cached in memory</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">((</span><span class="n"><a name="git_revwalk_next-66" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">walk</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_commit_lookup-7" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">wcommit</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">check_error</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;looking up commit during revwalk&quot;</span><span class="p">);</span>
+
+    <span class="n">cmsg</span>  <span class="o">=</span> <span class="n"><a name="git_commit_message-15" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">cauth</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-20" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s (%s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">cmsg</span><span class="p">,</span> <span class="n">cauth</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+
+    <span class="n"><a name="git_commit_free-11" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">wcommit</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-47'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-47">&#182;</a>
+        </div>
+        <p>Like the other objects, be sure to free the revwalker when you&#39;re done
+to prevent memory leaks.  Also, make sure that the repository being
+walked it not deallocated while the walk is in progress, or it will
+result in undefined behavior</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_revwalk_free-68" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">walk</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Index_File_Manipulation_*'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Index_File_Manipulation_*">&#182;</a>
+        </div>
+        <h3>Index File Manipulation *</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/index">index file API</a> allows you to read, traverse, update and write
+the Git index file (sometimes thought of as the staging area).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">index_walking</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">ecount</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Index Walking*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-49'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-49">&#182;</a>
+        </div>
+        <p>You can either open the index from the standard location in an open
+repository, as we&#39;re doing here, or you can open and manipulate any
+index file with <code>git_index_open_bare()</code>. The index for the repository
+will be located and loaded from disk.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_repository_index-63" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-50'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-50">&#182;</a>
+        </div>
+        <p>For each entry in the index, you can get a bunch of information
+including the SHA (oid), path and mode which map to the tree objects
+that are written out.  It also has filesystem properties to help
+determine what to inspect for changes (ctime, mtime, dev, ino, uid,
+gid, file<em>size and flags) All these properties are exported publicly in
+the `git</em>index_entry` struct</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">ecount</span> <span class="o">=</span> <span class="n"><a name="git_index_entrycount-30" class="fnlink" href="../../#v0.25.1/group/index/git_index_entrycount">git_index_entrycount</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ecount</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_index_entry</span> <span class="o">*</span><span class="n">e</span> <span class="o">=</span> <span class="n"><a name="git_index_get_byindex-31" class="fnlink" href="../../#v0.25.1/group/index/git_index_get_byindex">git_index_get_byindex</a></span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;path: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;mtime: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">mtime</span><span class="p">.</span><span class="n">seconds</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;fs: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">file_size</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_index_free-29" class="fnlink" href="../../#v0.25.1/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-References'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-References">&#182;</a>
+        </div>
+        <h3>References</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/reference">reference API</a> allows you to list, resolve, create and update
+references such as branches, tags and remote references (everything in
+the .git/refs directory).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">reference_listing</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_strarray</span> <span class="n">ref_list</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">ref</span><span class="p">;</span>
+  <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">oid_hex</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Reference Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-52'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-52">&#182;</a>
+        </div>
+        <p>Here we will implement something like <code>git for-each-ref</code> simply listing
+out all available references and the object SHA they resolve to.</p>
+
+<p>Now that we have the list of reference names, we can lookup each ref
+one at a time and resolve them to the SHA, then print both values out.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_reference_list-59" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_list">git_reference_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">memset</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">oid_hex</span><span class="p">));</span>
+    <span class="n">refname</span> <span class="o">=</span> <span class="n">ref_list</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="n"><a name="git_reference_lookup-55" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_lookup">git_reference_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+
+    <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_reference_type-58" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_type">git_reference_type</a></span><span class="p">(</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
+      <span class="k">case</span> <span class="n">GIT_REF_OID</span>:
+        <span class="n"><a name="git_oid_fmt-54" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid_hex</span><span class="p">,</span> <span class="n"><a name="git_reference_target-56" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_target">git_reference_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s [%s]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n">oid_hex</span><span class="p">);</span>
+        <span class="k">break</span><span class="p">;</span>
+
+      <span class="k">case</span> <span class="n">GIT_REF_SYMBOLIC</span>:
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s =&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">refname</span><span class="p">,</span> <span class="n"><a name="git_reference_symbolic_target-57" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_symbolic_target">git_reference_symbolic_target</a></span><span class="p">(</span><span class="n">ref</span><span class="p">));</span>
+        <span class="k">break</span><span class="p">;</span>
+      <span class="nl">default:</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unexpected reference type</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-71" class="fnlink" href="../../#v0.25.1/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref_list</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-Config_Files'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-Config_Files">&#182;</a>
+        </div>
+        <h3>Config Files</h3>
+
+<p>The <a href="http://libgit2.github.com/libgit2/#HEAD/group/config">config API</a> allows you to list and updatee config values
+in any of the accessible config file locations (system, global, local).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">config_files</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repo_path</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">email</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">config_path</span><span class="p">[</span><span class="mi">256</span><span class="p">];</span>
+  <span class="kt">int32_t</span> <span class="n">j</span><span class="p">;</span>
+  <span class="n">git_config</span> <span class="o">*</span><span class="n">cfg</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">*Config Listing*</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-54'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-54">&#182;</a>
+        </div>
+        <p>Open a config object so we can read global values from it.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">sprintf</span><span class="p">(</span><span class="n">config_path</span><span class="p">,</span> <span class="s">&quot;%s/config&quot;</span><span class="p">,</span> <span class="n">repo_path</span><span class="p">);</span>
+  <span class="n">check_error</span><span class="p">(</span><span class="n"><a name="git_config_open_ondisk-24" class="fnlink" href="../../#v0.25.1/group/config/git_config_open_ondisk">git_config_open_ondisk</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg</span><span class="p">,</span> <span class="n">config_path</span><span class="p">),</span> <span class="s">&quot;opening config&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_int32-25" class="fnlink" href="../../#v0.25.1/group/config/git_config_get_int32">git_config_get_int32</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">j</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;help.autocorrect&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Autocorrect: %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">j</span><span class="p">);</span>
+
+  <span class="n"><a name="git_config_get_string-26" class="fnlink" href="../../#v0.25.1/group/config/git_config_get_string">git_config_get_string</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">email</span><span class="p">,</span> <span class="n">cfg</span><span class="p">,</span> <span class="s">&quot;user.email&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Email: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">email</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/init.html b/ex/v0.25.1/init.html
new file mode 100644
index 0000000..30cc845
--- /dev/null
+++ b/ex/v0.25.1/init.html
@@ -0,0 +1,413 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>init.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>init.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;init&quot; example - shows how to initialize a new repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git init&quot;.  See the
+documentation for that (try &quot;git help init&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p>
+
+<p>This also contains a special additional option that regular &quot;git init&quot;
+does not support which is &quot;--initial-commit&quot; to make a first empty commit.
+That is demonstrated in the &quot;create<em>initial</em>commit&quot; helper function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Forward declarations of helpers</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span>
+  <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="cm">/* Initialize repository. */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>No options were specified, so let&#39;s demonstrate the default
+simple case of git<em>repository</em>init() API usage...</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-7" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span>
+      <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Some command line options were specified, so we&#39;ll use the
+extended init API to handle them</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span>
+    <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If you specified a separate git directory, then initialize
+the repository at that path and use the second path as the
+working directory of the repository (with a git-link file)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>      <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-8" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">initopts</span><span class="p">),</span>
+        <span class="s">&quot;Could not initialize repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print a message to stdout like &quot;git init&quot; does.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-9" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-10" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>As an extension to the basic &quot;git init&quot; command, this example
+gives the option to create an empty initial commit.  This is
+mostly to demonstrate what it takes to do that, but also some
+people like to have that empty base commit in their repo.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Created empty initial commit</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Unlike regular &quot;git init&quot;, this example shows how to create an initial
+empty commit in the repository.  This is the helper function that does
+that.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>First use the config to initialize a commit signature for the user.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-12" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to create a commit signature.&quot;</span><span class="p">,</span>
+          <span class="s">&quot;Perhaps &#39;user.name&#39; and &#39;user.email&#39; are not set&quot;</span><span class="p">);</span>
+
+  <span class="cm">/* Now let&#39;s create an empty tree for this commit */</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-11" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not open repository index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Outside of this example, you could call git<em>index</em>add_bypath()
+here to put actual files into the index.  For our purposes, we&#39;ll
+leave it empty for now.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-5" class="fnlink" href="../../#v0.25.1/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Unable to write initial tree from index&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_index_free-4" class="fnlink" href="../../#v0.25.1/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-14" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">tree_id</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not look up initial tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Ready to create the initial commit.</p>
+
+<p>Normally creating a commit would involve looking up the current
+HEAD commit and making that be the parent of the initial commit,
+but here this is the first commit so there will be no parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span>
+      <span class="o">&amp;</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">&quot;HEAD&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span>
+      <span class="nb">NULL</span><span class="p">,</span> <span class="s">&quot;Initial commit&quot;</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Could not create the initial commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Clean up so we don&#39;t leak memory.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n"><a name="git_tree_free-15" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-13" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;error: %s &#39;%s&#39;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span>
+      <span class="s">&quot;usage: init [-q | --quiet] [--bare] [--template=&lt;dir&gt;]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">&quot;</span>
+      <span class="s">&quot;            [--separate-git-dir] &lt;directory&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Parse the tail of the --shared= argument.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;false&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;umask&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;true&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;all&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;world&quot;</span><span class="p">)</span> <span class="o">||</span>
+       <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">&quot;everybody&quot;</span><span class="p">))</span>
+    <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span>
+
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;0&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">long</span> <span class="n">val</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid octal value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+    <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">else</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown value for --shared&quot;</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Process arguments.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;extra argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-q&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--quiet&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--bare&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--initial-commit&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--shared&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">template</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--template&quot;</span><span class="p">)</span> <span class="o">||</span>
+             <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--separate-git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;unknown option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">dir</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;must specify directory to init&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/log.html b/ex/v0.25.1/log.html
new file mode 100644
index 0000000..75450c7
--- /dev/null
+++ b/ex/v0.25.1/log.html
@@ -0,0 +1,735 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>log.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>log.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;log&quot; example - shows how to walk history and get commit info</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the libgit2 rev walker APIs to roughly
+simulate the output of <code>git log</code> and a few of command line arguments.
+<code>git log</code> has many many options and this only shows a few of them.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+<li>Most of the <code>git log</code> options</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to equivalent libgit2
+revwalker configuration calls</li>
+<li>Simplified options to apply pathspec limits and to show basic diffs</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>log_state represents walker being configured while handling options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="n">git_revwalk</span> <span class="o">*</span><span class="n">walker</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">sorting</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">revisions</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>utility functions that are called to configure the walker</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>log_options holds other command line options that affect log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">log_options</span> <span class="p">{</span>
+  <span class="kt">int</span> <span class="n">show_diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">skip</span><span class="p">,</span> <span class="n">limit</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">min_parents</span><span class="p">,</span> <span class="n">max_parents</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">before</span><span class="p">;</span>
+  <span class="kt">git_time_t</span> <span class="n">after</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">author</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">committer</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">grep</span><span class="p">;</span>
+<span class="p">};</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>utility functions that parse options and help with log output</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>utility functions for filtering</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">printed</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">parents</span><span class="p">,</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="n">s</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">log_options</span> <span class="n">opt</span><span class="p">;</span>
+  <span class="n">git_diff_options</span> <span class="n">diffopts</span> <span class="o">=</span> <span class="n">GIT_DIFF_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_pathspec</span> <span class="o">*</span><span class="n">ps</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-30" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Parse arguments and set up revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">last_arg</span> <span class="o">=</span> <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">argv</span><span class="p">[</span><span class="n">last_arg</span><span class="p">];</span>
+  <span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>	  <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="n">last_arg</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_pathspec_new-41" class="fnlink" href="../../#v0.25.1/group/pathspec/git_pathspec_new">git_pathspec_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">),</span>
+      <span class="s">&quot;Building pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="p">.</span><span class="n">revisions</span><span class="p">)</span>
+    <span class="n">add_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>Use the revwalker to traverse the history.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">printed</span> <span class="o">=</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(;</span> <span class="o">!</span><span class="n"><a name="git_revwalk_next-54" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_next">git_revwalk_next</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span> <span class="n"><a name="git_commit_free-2" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_lookup-1" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_lookup">git_commit_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">commit</span><span class="p">,</span> <span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">oid</span><span class="p">),</span>
+      <span class="s">&quot;Failed to look up commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+    <span class="n">parents</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-19" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">min_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">parents</span> <span class="o">&gt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">max_parents</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">diffopts</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="kt">int</span> <span class="n">unmatched</span> <span class="o">=</span> <span class="n">parents</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-14" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tree</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_pathspec_match_tree-43" class="fnlink" href="../../#v0.25.1/group/pathspec/git_pathspec_match_tree">git_pathspec_match_tree</a></span><span class="p">(</span>
+            <span class="nb">NULL</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="n">GIT_PATHSPEC_NO_MATCH_ERROR</span><span class="p">,</span> <span class="n">ps</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+          <span class="n">unmatched</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+        <span class="n"><a name="git_tree_free-58" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">unmatched</span> <span class="o">=</span> <span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">)</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+        <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">parents</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+          <span class="k">if</span> <span class="p">(</span><span class="n">match_with_parent</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">))</span>
+            <span class="n">unmatched</span><span class="o">--</span><span class="p">;</span>
+        <span class="p">}</span>
+      <span class="p">}</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">unmatched</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_author-12" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">author</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">signature_matches</span><span class="p">(</span><span class="n"><a name="git_commit_committer-11" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_committer">git_commit_committer</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">opt</span><span class="p">.</span><span class="n">committer</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">log_message_matches</span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">opt</span><span class="p">.</span><span class="n">grep</span><span class="p">))</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">count</span><span class="o">++</span> <span class="o">&lt;</span> <span class="n">opt</span><span class="p">.</span><span class="n">skip</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">limit</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="n">printed</span><span class="o">++</span> <span class="o">&gt;=</span> <span class="n">opt</span><span class="p">.</span><span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_commit_free-3" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">print_commit</span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">show_diff</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+      <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+        <span class="k">continue</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-15" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Get tree&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">parents</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_parent-21" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-16" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+        <span class="n"><a name="git_commit_free-4" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+      <span class="p">}</span>
+
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_diff_tree_to_tree-26" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span>
+        <span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-7" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">diffopts</span><span class="p">),</span>
+        <span class="s">&quot;Diff commit with parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+                <span class="n"><a name="git_diff_print-29" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_print">git_diff_print</a></span><span class="p">(</span><span class="n">diff</span><span class="p">,</span> <span class="n">GIT_DIFF_FORMAT_PATCH</span><span class="p">,</span> <span class="n">diff_output</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+        <span class="s">&quot;Displaying diff&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n"><a name="git_diff_free-24" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-59" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+      <span class="n"><a name="git_tree_free-60" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_pathspec_free-42" class="fnlink" href="../../#v0.25.1/group/pathspec/git_pathspec_free">git_pathspec_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">);</span>
+  <span class="n"><a name="git_revwalk_free-57" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_free">git_revwalk_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">walker</span><span class="p">);</span>
+  <span class="n"><a name="git_repository_free-46" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">s</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-31" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Determine if the given git_signature does not contain the filter text.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">signature_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sig</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="p">(</span><span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">||</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">))</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">log_message_matches</span><span class="p">(</span><span class="k">const</span> <span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">filter</span><span class="p">)</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">filter</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">message</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-9" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span>
+    <span class="n">strstr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">filter</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Push object (for hide or show) onto revwalker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">push_rev</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">,</span> <span class="kt">int</span> <span class="n">hide</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">hide</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">hide</span> <span class="o">^</span> <span class="n">hide</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-49" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="n"><a name="git_revwalk_sorting-55" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">obj</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push_head-52" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_push_head">git_revwalk_push_head</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">),</span>
+      <span class="s">&quot;Could not find repository HEAD&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">hide</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_hide-53" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_hide">git_revwalk_hide</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-34" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_push-51" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_push">git_revwalk_push</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n"><a name="git_object_id-35" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">obj</span><span class="p">)),</span>
+      <span class="s">&quot;Reference does not refer to a commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-38" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Parse revision string and add revs to walker.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">add_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">revstr</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">revs</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">hide</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-44" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">revstr</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">revstr</span> <span class="o">==</span> <span class="sc">&#39;^&#39;</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">;</span>
+    <span class="n">hide</span> <span class="o">=</span> <span class="o">!</span><span class="n">hide</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse_single-47" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_revparse-48" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">revstr</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">revs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-32" class="fnlink" href="../../#v0.25.1/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+        <span class="n"><a name="git_object_id-36" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-37" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+        <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">revstr</span><span class="p">);</span>
+      <span class="n">check_lg2</span><span class="p">(</span>
+        <span class="n"><a name="git_object_lookup-33" class="fnlink" href="../../#v0.25.1/group/object/git_object_lookup">git_object_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">GIT_OBJ_COMMIT</span><span class="p">),</span>
+        <span class="s">&quot;Could not find merge base commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+      <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">to</span><span class="p">,</span> <span class="n">hide</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">push_rev</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">revs</span><span class="p">.</span><span class="n">from</span><span class="p">,</span> <span class="o">!</span><span class="n">hide</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Update revwalker with sorting mode.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">set_sorting</span><span class="p">(</span><span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">sort_mode</span><span class="p">)</span>
+<span class="p">{</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Open repo on demand if it isn&#39;t already open.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-45" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Create revwalker on demand if it doesn&#39;t already exist.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">)</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revwalk_new-50" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_new">git_revwalk_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Could not create revision walker&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">sort_mode</span> <span class="o">==</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">)</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">^</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">;</span>
+  <span class="k">else</span>
+    <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">sort_mode</span> <span class="o">|</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">&amp;</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+
+  <span class="n"><a name="git_revwalk_sorting-56" class="fnlink" href="../../#v0.25.1/group/revwalk/git_revwalk_sorting">git_revwalk_sorting</a></span><span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">walker</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-18'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-18">&#182;</a>
+        </div>
+        <p>Helper to format a git_time value like Git.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_time</span><span class="p">(</span><span class="k">const</span> <span class="n">git_time</span> <span class="o">*</span><span class="n">intime</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">prefix</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">sign</span><span class="p">,</span> <span class="n">out</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
+  <span class="k">struct</span> <span class="n">tm</span> <span class="o">*</span><span class="n">intm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">offset</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">;</span>
+  <span class="kt">time_t</span> <span class="n">t</span><span class="p">;</span>
+
+  <span class="n">offset</span> <span class="o">=</span> <span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">offset</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;-&#39;</span><span class="p">;</span>
+    <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="n">offset</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">sign</span> <span class="o">=</span> <span class="sc">&#39;+&#39;</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">hours</span>   <span class="o">=</span> <span class="n">offset</span> <span class="o">/</span> <span class="mi">60</span><span class="p">;</span>
+  <span class="n">minutes</span> <span class="o">=</span> <span class="n">offset</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span>
+
+  <span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="kt">time_t</span><span class="p">)</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">time</span> <span class="o">+</span> <span class="p">(</span><span class="n">intime</span><span class="o">-&gt;</span><span class="n">offset</span> <span class="o">*</span> <span class="mi">60</span><span class="p">);</span>
+
+  <span class="n">intm</span> <span class="o">=</span> <span class="n">gmtime</span><span class="p">(</span><span class="o">&amp;</span><span class="n">t</span><span class="p">);</span>
+  <span class="n">strftime</span><span class="p">(</span><span class="n">out</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">out</span><span class="p">),</span> <span class="s">&quot;%a %b %e %T %Y&quot;</span><span class="p">,</span> <span class="n">intm</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s%s %c%02d%02d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">out</span><span class="p">,</span> <span class="n">sign</span><span class="p">,</span> <span class="n">hours</span><span class="p">,</span> <span class="n">minutes</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-19'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-19">&#182;</a>
+        </div>
+        <p>Helper to print a commit object.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">count</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">scan</span><span class="p">,</span> <span class="o">*</span><span class="n">eol</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_tostr-39" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">),</span> <span class="n"><a name="git_commit_id-6" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_id">git_commit_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">));</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;commit %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">count</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_commit_parentcount-20" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parentcount">git_commit_parentcount</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Merge:&quot;</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">count</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n"><a name="git_oid_tostr-40" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="n"><a name="git_commit_parent_id-23" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parent_id">git_commit_parent_id</a></span><span class="p">(</span><span class="n">commit</span><span class="p">,</span> <span class="n">i</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot; %s&quot;</span><span class="p">,</span> <span class="n">buf</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">sig</span> <span class="o">=</span> <span class="n"><a name="git_commit_author-13" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_author">git_commit_author</a></span><span class="p">(</span><span class="n">commit</span><span class="p">))</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Author: %s &lt;%s&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">,</span> <span class="n">sig</span><span class="o">-&gt;</span><span class="n">email</span><span class="p">);</span>
+    <span class="n">print_time</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sig</span><span class="o">-&gt;</span><span class="n">when</span><span class="p">,</span> <span class="s">&quot;Date:   &quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">scan</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-10" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span> <span class="n">scan</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">scan</span><span class="p">;</span> <span class="p">)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="n">eol</span> <span class="o">=</span> <span class="n">scan</span><span class="p">;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">eol</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">;</span> <span class="o">++</span><span class="n">eol</span><span class="p">)</span> <span class="cm">/* find eol */</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    %.*s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">eol</span> <span class="o">-</span> <span class="n">scan</span><span class="p">),</span> <span class="n">scan</span><span class="p">);</span>
+    <span class="n">scan</span> <span class="o">=</span> <span class="o">*</span><span class="n">eol</span> <span class="o">?</span> <span class="n">eol</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">:</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="p">}</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-20'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-20">&#182;</a>
+        </div>
+        <p>Helper to find how many files in a commit changed from its nth parent.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">match_with_parent</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">git_diff_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_commit</span> <span class="o">*</span><span class="n">parent</span><span class="p">;</span>
+  <span class="n">git_tree</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
+  <span class="n">git_diff</span> <span class="o">*</span><span class="n">diff</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ndeltas</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_commit_parent-22" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_parent">git_commit_parent</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">parent</span><span class="p">,</span> <span class="n">commit</span><span class="p">,</span> <span class="p">(</span><span class="kt">size_t</span><span class="p">)</span><span class="n">i</span><span class="p">),</span> <span class="s">&quot;Get parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-17" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span> <span class="s">&quot;Tree for parent&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_commit_tree-18" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_tree">git_commit_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">b</span><span class="p">,</span> <span class="n">commit</span><span class="p">),</span> <span class="s">&quot;Tree for commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n">check_lg2</span><span class="p">(</span>
+    <span class="n"><a name="git_diff_tree_to_tree-27" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_tree_to_tree">git_diff_tree_to_tree</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">diff</span><span class="p">,</span> <span class="n"><a name="git_commit_owner-8" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_owner">git_commit_owner</a></span><span class="p">(</span><span class="n">commit</span><span class="p">),</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">opts</span><span class="p">),</span>
+    <span class="s">&quot;Checking diff between parent and commit&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">ndeltas</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n"><a name="git_diff_num_deltas-28" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_num_deltas">git_diff_num_deltas</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+
+  <span class="n"><a name="git_diff_free-25" class="fnlink" href="../../#v0.25.1/group/diff/git_diff_free">git_diff_free</a></span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-61" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+  <span class="n"><a name="git_tree_free-62" class="fnlink" href="../../#v0.25.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+  <span class="n"><a name="git_commit_free-5" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_free">git_commit_free</a></span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">ndeltas</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-21'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-21">&#182;</a>
+        </div>
+        <p>Print a usage message for the program.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: log [&lt;options&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-22'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-22">&#182;</a>
+        </div>
+        <p>Parse some log command line options.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_options</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">log_state</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">struct</span> <span class="n">log_options</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">s</span><span class="p">));</span>
+  <span class="n">s</span><span class="o">-&gt;</span><span class="n">sorting</span> <span class="o">=</span> <span class="n">GIT_SORT_TIME</span><span class="p">;</span>
+
+  <span class="n">memset</span><span class="p">(</span><span class="n">opt</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opt</span><span class="p">));</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">max_parents</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">limit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">add_revision</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">a</span><span class="p">))</span>
+        <span class="n">s</span><span class="o">-&gt;</span><span class="n">revisions</span><span class="o">++</span><span class="p">;</span>
+      <span class="k">else</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-23'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-23">&#182;</a>
+        </div>
+        <p>Try failed revision parse as filename.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>        <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">;</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--date-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TIME</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--topo-order&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_TOPOLOGICAL</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--reverse&quot;</span><span class="p">))</span>
+      <span class="n">set_sorting</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">GIT_SORT_REVERSE</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="o">-&gt;</span><span class="n">author</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--author&quot;</span><span class="p">))</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-24'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-24">&#182;</a>
+        </div>
+        <p>Found valid --author <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;committer, &amp;args, &quot;--committer&quot;))
+            /</em>* Found valid --committer <em>/;
+        else if (match<em>str</em>arg(&amp;opt-&gt;grep, &amp;args, &quot;--grep&quot;))
+            /</em>* Found valid --grep <em>/;
+        else if (match<em>str</em>arg(&amp;s-&gt;repodir, &amp;args, &quot;--git-dir&quot;))
+            /</em>* Found git-dir. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;skip, &amp;args, &quot;--skip&quot;, 0))
+            /</em>* Found valid --skip. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;limit, &amp;args, &quot;--max-count&quot;, 0))
+            /</em>* Found valid --max-count. <em>/;
+        else if (a[1] &gt;= &#39;0&#39; &amp;&amp; a[1] &lt;= &#39;9&#39;)
+            is<em>integer(&amp;opt-&gt;limit, a + 1, 0);
+        else if (match</em>int_arg(&amp;opt-&gt;limit, &amp;args, &quot;-n&quot;, 0))
+            /</em>* Found valid -n. <em>/;
+        else if (!strcmp(a, &quot;--merges&quot;))
+            opt-&gt;min<em>parents = 2;
+        else if (!strcmp(a, &quot;--no-merges&quot;))
+            opt-&gt;max</em>parents = 1;
+        else if (!strcmp(a, &quot;--no-min-parents&quot;))
+            opt-&gt;min<em>parents = 0;
+        else if (!strcmp(a, &quot;--no-max-parents&quot;))
+            opt-&gt;max</em>parents = -1;
+        else if (match<em>int</em>arg(&amp;opt-&gt;max_parents, &amp;args, &quot;--max-parents=&quot;, 1))
+            /</em>* Found valid --max-parents. <em>/;
+        else if (match<em>int</em>arg(&amp;opt-&gt;min_parents, &amp;args, &quot;--min-parents=&quot;, 0))
+            /</em>* Found valid --min<em>parents. */;
+        else if (!strcmp(a, &quot;-p&quot;) || !strcmp(a, &quot;-u&quot;) || !strcmp(a, &quot;--patch&quot;))
+            opt-&gt;show</em>diff = 1;
+        else
+            usage(&quot;Unsupported argument&quot;, a);
+    }</p>
+
+<pre><code>return args.pos;
+</code></pre>
+
+<p>}</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/clone.html b/ex/v0.25.1/network/clone.html
new file mode 100644
index 0000000..4caee4a
--- /dev/null
+++ b/ex/v0.25.1/network/clone.html
@@ -0,0 +1,203 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>clone.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>clone.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;git2/clone.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">progress_data</span> <span class="p">{</span>
+  <span class="n">git_transfer_progress</span> <span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">completed_steps</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">total_steps</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">progress_data</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">network_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">index_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span>
+    <span class="p">(</span><span class="mi">100</span><span class="o">*</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">:</span>
+    <span class="mi">0</span><span class="p">;</span>
+
+  <span class="kt">int</span> <span class="n">checkout_percent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">&gt;</span> <span class="mi">0</span>
+    <span class="o">?</span> <span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">)</span> <span class="o">/</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span>
+    <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">kbytes</span> <span class="o">=</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_bytes</span> <span class="o">/</span> <span class="mi">1024</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span> <span class="o">&amp;&amp;</span>
+    <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_deltas</span><span class="p">,</span>
+           <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;net %3d%% (%4d kb, %5d/%5d)  /  idx %3d%% (%5d/%5d)  /  chk %3d%% (%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;/%4&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;) %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+       <span class="n">network_percent</span><span class="p">,</span> <span class="n">kbytes</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">index_percent</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span><span class="p">.</span><span class="n">total_objects</span><span class="p">,</span>
+       <span class="n">checkout_percent</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span><span class="p">,</span> <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span><span class="p">,</span>
+       <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">sideband_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span> <span class="c1">// unused</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">fetch_progress</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">fetch_progress</span> <span class="o">=</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">checkout_progress</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">cur</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">tot</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="o">*</span><span class="n">pd</span> <span class="o">=</span> <span class="p">(</span><span class="n">progress_data</span><span class="o">*</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">completed_steps</span> <span class="o">=</span> <span class="n">cur</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">total_steps</span> <span class="o">=</span> <span class="n">tot</span><span class="p">;</span>
+  <span class="n">pd</span><span class="o">-&gt;</span><span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span>
+  <span class="n">print_progress</span><span class="p">(</span><span class="n">pd</span><span class="p">);</span>
+<span class="p">}</span>
+
+
+<span class="kt">int</span> <span class="nf">do_clone</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">progress_data</span> <span class="n">pd</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">0</span><span class="p">}};</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">cloned_repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_clone_options</span> <span class="n">clone_opts</span> <span class="o">=</span> <span class="n">GIT_CLONE_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="n">git_checkout_options</span> <span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_OPTIONS_INIT</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">path</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span> <span class="c1">// unused</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Validate args</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span> <span class="p">(</span><span class="s">&quot;USAGE: %s &lt;url&gt; &lt;path&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Set up options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">checkout_strategy</span> <span class="o">=</span> <span class="n">GIT_CHECKOUT_SAFE</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_cb</span> <span class="o">=</span> <span class="n">checkout_progress</span><span class="p">;</span>
+  <span class="n">checkout_opts</span><span class="p">.</span><span class="n">progress_payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">checkout_opts</span> <span class="o">=</span> <span class="n">checkout_opts</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="n">sideband_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fetch_progress</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+  <span class="n">clone_opts</span><span class="p">.</span><span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">payload</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">pd</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Do the clone</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_clone-1" class="fnlink" href="../../#v0.25.1/group/clone/git_clone">git_clone</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">cloned_repo</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">clone_opts</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="n">git_error</span> <span class="o">*</span><span class="n">err</span> <span class="o">=</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.25.1/group/giterr/giterr_last">giterr_last</a></span><span class="p">();</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">err</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">klass</span><span class="p">,</span> <span class="n">err</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+    <span class="k">else</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;ERROR %d: no detailed info</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">error</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">cloned_repo</span><span class="p">)</span> <span class="n"><a name="git_repository_free-3" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">cloned_repo</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/common.html b/ex/v0.25.1/network/common.html
new file mode 100644
index 0000000..b4bc3d6
--- /dev/null
+++ b/ex/v0.25.1/network/common.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>common.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>common.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/fetch.html b/ex/v0.25.1/network/fetch.html
new file mode 100644
index 0000000..8ec8237
--- /dev/null
+++ b/ex/v0.25.1/network/fetch.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>fetch.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>fetch.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#ifndef _WIN32</span>
+<span class="cp"># include &lt;pthread.h&gt;</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="k">struct</span> <span class="n">dl_data</span> <span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="o">*</span><span class="n">fetch_opts</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">ret</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">finished</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">str</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;remote: %.*s&quot;</span><span class="p">,</span> <span class="n">len</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+  <span class="n">fflush</span><span class="p">(</span><span class="n">stdout</span><span class="p">);</span> <span class="cm">/* We don&#39;t have the \n to force the flush */</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This function gets called for each remote-tracking branch that gets
+updated. The message we output depends on whether it&#39;s a new one or
+an update.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">update_cb</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">refname</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">git_oid</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span> <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="o">+</span><span class="mi">1</span><span class="p">];</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+
+  <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">b_str</span><span class="p">,</span> <span class="n">b</span><span class="p">);</span>
+  <span class="n">b_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_oid_iszero-3" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_iszero">git_oid_iszero</a></span><span class="p">(</span><span class="n">a</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[new]     %.20s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_fmt-2" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">a_str</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+    <span class="n">a_str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span><span class="p">]</span> <span class="o">=</span> <span class="sc">&#39;\0&#39;</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;[updated] %.10s..%.10s %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">a_str</span><span class="p">,</span> <span class="n">b_str</span><span class="p">,</span> <span class="n">refname</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>This gets called during the download and indexing. Here we show
+processed and total objects in the pack and the amount of received
+data. Most frontends will probably want to show a percentage and
+the download rate.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">transfer_progress_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">payload</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span> <span class="o">==</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Resolving deltas %d/%d</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_deltas</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_deltas</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Received %d/%d objects (%d) in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes</span><span class="se">\r</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">fetch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">;</span>
+  <span class="n">git_fetch_options</span> <span class="n">fetch_opts</span> <span class="o">=</span> <span class="n">GIT_FETCH_OPTIONS_INIT</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s fetch &lt;repo&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="cm">/* Figure out whether it&#39;s a named remote or a URL */</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Fetching %s for repo %p</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">repo</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_create_anonymous-4" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span>
+
+  <span class="cm">/* Set up the callbacks (only update_tips for now) */</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">update_tips</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">update_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">sideband_progress</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">transfer_progress</span> <span class="o">=</span> <span class="n">transfer_progress_cb</span><span class="p">;</span>
+  <span class="n">fetch_opts</span><span class="p">.</span><span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Perform the fetch with the configured refspecs from the
+config. Update the reflog for the updated references with
+&quot;fetch&quot;.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_fetch-8" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_fetch">git_remote_fetch</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fetch_opts</span><span class="p">,</span> <span class="s">&quot;fetch&quot;</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">on_error</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>If there are local objects (we got a thin pack), then tell
+the user how many objects we saved from having to cross the
+network.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">stats</span> <span class="o">=</span> <span class="n"><a name="git_remote_stats-9" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_stats">git_remote_stats</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot; bytes (used %d local objects)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+           <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">local_objects</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span><span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Received %d/%d objects in %&quot;</span> <span class="n">PRIuZ</span> <span class="s">&quot;bytes</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">received_bytes</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+ <span class="nl">on_error:</span>
+  <span class="n"><a name="git_remote_free-7" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/git2.html b/ex/v0.25.1/network/git2.html
new file mode 100644
index 0000000..7b62b5e
--- /dev/null
+++ b/ex/v0.25.1/network/git2.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>git2.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>git2.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This part is not strictly libgit2-dependent, but you can use this
+as a starting point for a git-like tool</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+  <span class="n">git_cb</span> <span class="n">fn</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">commands</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{</span>
+  <span class="p">{</span><span class="s">&quot;ls-remote&quot;</span><span class="p">,</span> <span class="n">ls_remote</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;fetch&quot;</span><span class="p">,</span> <span class="n">fetch</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;clone&quot;</span><span class="p">,</span> <span class="n">do_clone</span><span class="p">},</span>
+  <span class="p">{</span><span class="s">&quot;index-pack&quot;</span><span class="p">,</span> <span class="n">index_pack</span><span class="p">},</span>
+  <span class="p">{</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">}</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">run_command</span><span class="p">(</span><span class="n">git_cb</span> <span class="n">fn</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Before running the actual command, create an instance of the local
+repository and pass it to the function.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_open-5" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.git&quot;</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run the command. If something goes wrong, print the error message to stderr</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n">fn</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n"><a name="giterr_last-1" class="fnlink" href="../../#v0.25.1/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Error without message&quot;</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Bad news:</span><span class="se">\n</span><span class="s"> %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n"><a name="giterr_last-2" class="fnlink" href="../../#v0.25.1/group/giterr/giterr_last">giterr_last</a></span><span class="p">()</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">repo</span><span class="p">)</span>
+    <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="o">!!</span><span class="n">error</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">return_code</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s &lt;cmd&gt; [repo]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="n">EXIT_FAILURE</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">name</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">return_code</span> <span class="o">=</span> <span class="n">run_command</span><span class="p">(</span><span class="n">commands</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">fn</span><span class="p">,</span> <span class="o">--</span><span class="n">argc</span><span class="p">,</span> <span class="o">++</span><span class="n">argv</span><span class="p">);</span>
+      <span class="k">goto</span> <span class="n">shutdown</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Command not found: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+<span class="nl">shutdown:</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">return_code</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/index-pack.html b/ex/v0.25.1/network/index-pack.html
new file mode 100644
index 0000000..86dfb94
--- /dev/null
+++ b/ex/v0.25.1/network/index-pack.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>index-pack.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>index-pack.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;sys/types.h&gt;</span>
+<span class="cp">#include &lt;sys/stat.h&gt;</span>
+<span class="cp">#include &lt;fcntl.h&gt;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;io.h&gt;</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+
+<span class="cp"># define open _open</span>
+<span class="cp"># define read _read</span>
+<span class="cp"># define close _close</span>
+
+<span class="cp">#define ssize_t unsigned int</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span>
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This could be run in the main loop whilst the application waits for
+the indexing to finish in a worker thread</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">index_cb</span><span class="p">(</span><span class="k">const</span> <span class="n">git_transfer_progress</span> <span class="o">*</span><span class="n">stats</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">data</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Processing %d of %d&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="o">-&gt;</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">index_pack</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_indexer</span> <span class="o">*</span><span class="n">idx</span><span class="p">;</span>
+  <span class="n">git_transfer_progress</span> <span class="n">stats</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">hash</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">int</span> <span class="n">fd</span><span class="p">;</span>
+  <span class="kt">ssize_t</span> <span class="n">read_bytes</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">buf</span><span class="p">[</span><span class="mi">512</span><span class="p">];</span>
+
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">repo</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s index-pack &lt;packfile&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_indexer_new-1" class="fnlink" href="../../#v0.25.1/group/indexer/git_indexer_new">git_indexer_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">idx</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="s">&quot;bad idx&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">fd</span> <span class="o">=</span> <span class="n">open</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="mi">0</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;open&quot;</span><span class="p">);</span>
+    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">do</span> <span class="p">{</span>
+    <span class="n">read_bytes</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">fd</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buf</span><span class="p">));</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_append-2" class="fnlink" href="../../#v0.25.1/group/indexer/git_indexer_append">git_indexer_append</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">read_bytes</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+    <span class="n">index_cb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">stats</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">while</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">read_bytes</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+    <span class="n">perror</span><span class="p">(</span><span class="s">&quot;failed reading&quot;</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_indexer_commit-3" class="fnlink" href="../../#v0.25.1/group/indexer/git_indexer_commit">git_indexer_commit</a></span><span class="p">(</span><span class="n">idx</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">stats</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r</span><span class="s">Indexing %d of %d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">indexed_objects</span><span class="p">,</span> <span class="n">stats</span><span class="p">.</span><span class="n">total_objects</span><span class="p">);</span>
+
+  <span class="n"><a name="git_oid_fmt-6" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">hash</span><span class="p">,</span> <span class="n"><a name="git_indexer_hash-4" class="fnlink" href="../../#v0.25.1/group/indexer/git_indexer_hash">git_indexer_hash</a></span><span class="p">(</span><span class="n">idx</span><span class="p">));</span>
+  <span class="n">puts</span><span class="p">(</span><span class="n">hash</span><span class="p">);</span>
+
+ <span class="nl">cleanup:</span>
+  <span class="n">close</span><span class="p">(</span><span class="n">fd</span><span class="p">);</span>
+  <span class="n"><a name="git_indexer_free-5" class="fnlink" href="../../#v0.25.1/group/indexer/git_indexer_free">git_indexer_free</a></span><span class="p">(</span><span class="n">idx</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/network/ls-remote.html b/ex/v0.25.1/network/ls-remote.html
new file mode 100644
index 0000000..81b86f7
--- /dev/null
+++ b/ex/v0.25.1/network/ls-remote.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>ls-remote.c</title>
+  <link rel="stylesheet" href="../../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="../add.html">add.c</a>
+          <a class="source" href="../blame.html">blame.c</a>
+          <a class="source" href="../cat-file.html">cat-file.c</a>
+          <a class="source" href="../common.html">common.c</a>
+          <a class="source" href="../describe.html">describe.c</a>
+          <a class="source" href="../diff.html">diff.c</a>
+          <a class="source" href="../for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="../general.html">general.c</a>
+          <a class="source" href="../init.html">init.c</a>
+          <a class="source" href="../log.html">log.c</a>
+          <a class="source" href="clone.html">clone.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="fetch.html">fetch.c</a>
+          <a class="source" href="git2.html">git2.c</a>
+          <a class="source" href="index-pack.html">index-pack.c</a>
+          <a class="source" href="ls-remote.html">ls-remote.c</a>
+          <a class="source" href="../remote.html">remote.c</a>
+          <a class="source" href="../rev-list.html">rev-list.c</a>
+          <a class="source" href="../rev-parse.html">rev-parse.c</a>
+          <a class="source" href="../showindex.html">showindex.c</a>
+          <a class="source" href="../status.html">status.c</a>
+          <a class="source" href="../tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>ls-remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cp">#include &lt;git2.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &quot;common.h&quot;</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">use_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+  <span class="k">const</span> <span class="n">git_remote_head</span> <span class="o">**</span><span class="n">refs</span><span class="p">;</span>
+  <span class="kt">size_t</span> <span class="n">refs_len</span><span class="p">,</span> <span class="n">i</span><span class="p">;</span>
+  <span class="n">git_remote_callbacks</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="n">GIT_REMOTE_CALLBACKS_INIT</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Find the remote by name</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_lookup-3" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_create_anonymous-2" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_create_anonymous">git_remote_create_anonymous</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+      <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Connect to the remote and call the printing function for
+each of the remote references.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">callbacks</span><span class="p">.</span><span class="n">credentials</span> <span class="o">=</span> <span class="n">cred_acquire_cb</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_remote_connect-4" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_connect">git_remote_connect</a></span><span class="p">(</span><span class="n">remote</span><span class="p">,</span> <span class="n">GIT_DIRECTION_FETCH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">callbacks</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Get the list of references on the remote and print out
+their name next to what they point to.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_remote_ls-5" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_ls">git_remote_ls</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">refs</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs_len</span><span class="p">,</span> <span class="n">remote</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="k">goto</span> <span class="n">cleanup</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">refs_len</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="n">oid</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+    <span class="n"><a name="git_oid_fmt-1" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_fmt">git_oid_fmt</a></span><span class="p">(</span><span class="n">oid</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">oid</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">oid</span><span class="p">,</span> <span class="n">refs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+<span class="nl">cleanup:</span>
+  <span class="n"><a name="git_remote_free-6" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>Entry point for this command</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="kt">int</span> <span class="nf">ls_remote</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: %s ls-remote &lt;remote&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]);</span>
+    <span class="k">return</span> <span class="n">EXIT_FAILURE</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n">use_remote</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
+
+  <span class="k">return</span> <span class="n">error</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/remote.html b/ex/v0.25.1/remote.html
new file mode 100644
index 0000000..ff29cb5
--- /dev/null
+++ b/ex/v0.25.1/remote.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>remote.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>remote.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;remote&quot; example - shows how to modify remotes for a repo</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This is a sample program that is similar to &quot;git remote&quot;.  See the
+documentation for that (try &quot;git help remote&quot;) to understand what this
+program is emulating.</p>
+
+<p>This demonstrates using the libgit2 APIs to modify remotes of a repository.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="n">subcmd</span> <span class="p">{</span>
+  <span class="n">subcmd_add</span><span class="p">,</span>
+  <span class="n">subcmd_remove</span><span class="p">,</span>
+  <span class="n">subcmd_rename</span><span class="p">,</span>
+  <span class="n">subcmd_seturl</span><span class="p">,</span>
+  <span class="n">subcmd_show</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="cm">/* for command-specific args */</span>
+  <span class="kt">int</span> <span class="n">argc</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">);</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">retval</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">opt</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_buf</span> <span class="n">buf</span> <span class="o">=</span> <span class="n">GIT_BUF_INIT_CONST</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">parse_subcmd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n"><a name="git_libgit2_init-2" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_discover-15" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_discover">git_repository_discover</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+    <span class="s">&quot;Could not find repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open-14" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open">git_repository_open</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">buf</span><span class="p">.</span><span class="n">ptr</span><span class="p">),</span>
+    <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.1/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">buf</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n">opt</span><span class="p">.</span><span class="n">cmd</span><span class="p">)</span>
+  <span class="p">{</span>
+  <span class="k">case</span> <span class="n">subcmd_add</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_add</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_remove</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_remove</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_rename</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_rename</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_seturl</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_seturl</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="k">case</span> <span class="n">subcmd_show</span>:
+    <span class="n">retval</span> <span class="o">=</span> <span class="n">cmd_show</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
+    <span class="k">break</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_libgit2_shutdown-3" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_add</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span><span class="p">;</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name and URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">url</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_create-4" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_create">git_remote_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">),</span>
+      <span class="s">&quot;could not create remote&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_remove</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify a name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">name</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_delete-13" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_delete">git_remote_delete</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not delete remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_rename</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">old</span><span class="p">,</span> <span class="o">*</span><span class="n">new</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">problems</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify old and new remote name&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">old</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+  <span class="n">new</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+
+  <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_rename-12" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_rename">git_remote_rename</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">);</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">retval</span><span class="p">)</span>
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">problems</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">puts</span><span class="p">(</span><span class="n">problems</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-16" class="fnlink" href="../../#v0.25.1/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">problems</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="n">retval</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_seturl</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">,</span> <span class="n">retval</span><span class="p">,</span> <span class="n">push</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">name</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">*</span><span class="n">url</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--push&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">push</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">name</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">url</span> <span class="o">=</span> <span class="n">arg</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;invalid argument to set-url&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">name</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">||</span> <span class="n">url</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;you need to specify remote and the new URL&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_pushurl-9" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_set_pushurl">git_remote_set_pushurl</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">retval</span> <span class="o">=</span> <span class="n"><a name="git_remote_set_url-8" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_set_url">git_remote_set_url</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">retval</span><span class="p">,</span> <span class="s">&quot;could not set URL&quot;</span><span class="p">,</span> <span class="n">url</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">cmd_show</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">,</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">fetch</span><span class="p">,</span> <span class="o">*</span><span class="n">push</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">verbose</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">remotes</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="n">git_remote</span> <span class="o">*</span><span class="n">remote</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argc</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">arg</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">argv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;-v&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;--verbose&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">verbose</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_list-11" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_list">git_remote_list</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+    <span class="s">&quot;could not retrieve remotes&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="n">remotes</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">name</span> <span class="o">=</span> <span class="n">remotes</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">verbose</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">puts</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+      <span class="k">continue</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_remote_lookup-5" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_lookup">git_remote_lookup</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remote</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;could not look up remote&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+    <span class="n">fetch</span> <span class="o">=</span> <span class="n"><a name="git_remote_url-6" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_url">git_remote_url</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">fetch</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (fetch)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">fetch</span><span class="p">);</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n"><a name="git_remote_pushurl-7" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_pushurl">git_remote_pushurl</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+    <span class="cm">/* use fetch URL if no distinct push URL has been set */</span>
+    <span class="n">push</span> <span class="o">=</span> <span class="n">push</span> <span class="o">?</span> <span class="n">push</span> <span class="o">:</span> <span class="n">fetch</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">push</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\t</span><span class="s">%s (push)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">push</span><span class="p">);</span>
+
+    <span class="n"><a name="git_remote_free-10" class="fnlink" href="../../#v0.25.1/group/remote/git_remote_free">git_remote_free</a></span><span class="p">(</span><span class="n">remote</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-17" class="fnlink" href="../../#v0.25.1/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">remotes</span><span class="p">);</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_subcmd</span><span class="p">(</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">opt</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+  <span class="k">enum</span> <span class="n">subcmd</span> <span class="n">cmd</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">argc</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">)</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;no command specified&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;add&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_add</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;remove&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_remove</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;rename&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_rename</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;set-url&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_seturl</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="s">&quot;show&quot;</span><span class="p">))</span> <span class="p">{</span>
+    <span class="n">cmd</span> <span class="o">=</span> <span class="n">subcmd_show</span><span class="p">;</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">usage</span><span class="p">(</span><span class="s">&quot;command is not valid&quot;</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">cmd</span> <span class="o">=</span> <span class="n">cmd</span><span class="p">;</span>
+
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argc</span> <span class="o">=</span> <span class="n">argc</span> <span class="o">-</span> <span class="mi">2</span><span class="p">;</span> <span class="cm">/* executable and subcommand are removed */</span>
+  <span class="n">opt</span><span class="o">-&gt;</span><span class="n">argv</span> <span class="o">=</span> <span class="n">argv</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;usage: remote add &lt;name&gt; &lt;url&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote remove &lt;name&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote rename &lt;old&gt; &lt;new&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote set-url [--push] &lt;name&gt; &lt;newurl&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+  <span class="n">fputs</span><span class="p">(</span><span class="s">&quot;       remote show [-v|--verbose]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">stderr</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">msg</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/rev-list.html b/ex/v0.25.1/rev-list.html
new file mode 100644
index 0000000..6d05d90
--- /dev/null
+++ b/ex/v0.25.1/rev-list.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-list.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-list.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/rev-parse.html b/ex/v0.25.1/rev-parse.html
new file mode 100644
index 0000000..6153d56
--- /dev/null
+++ b/ex/v0.25.1/rev-parse.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>rev-parse.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>rev-parse.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;rev-parse&quot; example - shows how to parse revspecs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>Forward declarations for helpers.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">struct</span> <span class="n">parse_state</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">spec</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">not</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">);</span>
+
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">parse_state</span> <span class="n">ps</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n">parse_revision</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="p">),</span> <span class="s">&quot;Parsing&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-17" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">ps</span><span class="p">.</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">message</span> <span class="o">&amp;&amp;</span> <span class="n">arg</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">message</span><span class="p">)</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: rev-parse [ --option ] &lt;args&gt;...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">)</span>
+        <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Too many specs&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--not&quot;</span><span class="p">))</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span> <span class="o">=</span> <span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">not</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--git-dir&quot;</span><span class="p">))</span>
+      <span class="n">usage</span><span class="p">(</span><span class="s">&quot;Cannot handle argument&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">parse_revision</span><span class="p">(</span><span class="k">struct</span> <span class="n">parse_state</span> <span class="o">*</span><span class="n">ps</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_revspec</span> <span class="n">rs</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">str</span><span class="p">[</span><span class="n">GIT_OID_HEXSZ</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">)</span>
+      <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="s">&quot;.&quot;</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-16" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository from&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse-18" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse">git_revparse</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">rs</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">),</span> <span class="s">&quot;Could not parse&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_SINGLE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-12" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-4" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_RANGE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n"><a name="git_oid_tostr-13" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-5" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">((</span><span class="n">rs</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;</span> <span class="n">GIT_REVPARSE_MERGE_BASE</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">git_oid</span> <span class="n">base</span><span class="p">;</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_merge_base-3" class="fnlink" href="../../#v0.25.1/group/merge/git_merge_base">git_merge_base</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">base</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span>
+            <span class="n"><a name="git_object_id-6" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">),</span> <span class="n"><a name="git_object_id-7" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">to</span><span class="p">)),</span>
+          <span class="s">&quot;Could not find merge base&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+
+      <span class="n"><a name="git_oid_tostr-14" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="o">&amp;</span><span class="n">base</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n"><a name="git_oid_tostr-15" class="fnlink" href="../../#v0.25.1/group/oid/git_oid_tostr">git_oid_tostr</a></span><span class="p">(</span><span class="n">str</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">str</span><span class="p">),</span> <span class="n"><a name="git_object_id-8" class="fnlink" href="../../#v0.25.1/group/object/git_object_id">git_object_id</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">));</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;^%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
+    <span class="n"><a name="git_object_free-11" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">rs</span><span class="p">.</span><span class="n">from</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="k">else</span> <span class="p">{</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Invalid results from <a name="git_revparse-19" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse">git_revparse</a>&quot;</span><span class="p">,</span> <span class="n">ps</span><span class="o">-&gt;</span><span class="n">spec</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/showindex.html b/ex/v0.25.1/showindex.html
new file mode 100644
index 0000000..ec390f9
--- /dev/null
+++ b/ex/v0.25.1/showindex.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>showindex.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>showindex.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/status.html b/ex/v0.25.1/status.html
new file mode 100644
index 0000000..225a9f4
--- /dev/null
+++ b/ex/v0.25.1/status.html
@@ -0,0 +1,681 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>status.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>status.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;status&quot; example - shows how to use the status APIs</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span>
+<span class="cp">#ifdef _WIN32</span>
+<span class="cp"># include &lt;Windows.h&gt;</span>
+<span class="cp"># define sleep(a) Sleep(a * 1000)</span>
+<span class="cp">#else</span>
+<span class="cp"># include &lt;unistd.h&gt;</span>
+<span class="cp">#endif</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>This example demonstrates the use of the libgit2 status APIs,
+particularly the <code>git_status_list</code> object, to roughly simulate the
+output of running <code>git status</code>.  It serves as a simple example of
+using those APIs to get basic status information.</p>
+
+<p>This does not have:</p>
+
+<ul>
+<li>Robust error handling</li>
+<li>Colorized or paginated output formatting</li>
+</ul>
+
+<p>This does have:</p>
+
+<ul>
+<li>Examples of translating command line arguments to the status
+options settings to mimic <code>git status</code> results.</li>
+<li>A sample status formatter that matches the default &quot;long&quot; format
+from <code>git status</code></li>
+<li>A sample status formatter that matches the &quot;short&quot; format</li>
+</ul>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">enum</span> <span class="p">{</span>
+  <span class="n">FORMAT_DEFAULT</span>   <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
+  <span class="n">FORMAT_LONG</span>      <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+  <span class="n">FORMAT_SHORT</span>     <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
+  <span class="n">FORMAT_PORCELAIN</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
+<span class="p">};</span>
+
+<span class="cp">#define MAX_PATHSPEC 8</span>
+
+<span class="k">struct</span> <span class="n">opts</span> <span class="p">{</span>
+  <span class="n">git_status_options</span> <span class="n">statusopt</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">repodir</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span><span class="n">pathspec</span><span class="p">[</span><span class="n">MAX_PATHSPEC</span><span class="p">];</span>
+  <span class="kt">int</span> <span class="n">npaths</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">format</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">zterm</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showbranch</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">showsubmod</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">repeat</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">);</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">);</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">;</span>
+  <span class="k">struct</span> <span class="n">opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="n">GIT_STATUS_OPTIONS_INIT</span><span class="p">,</span> <span class="s">&quot;.&quot;</span> <span class="p">};</span>
+
+  <span class="n"><a name="git_libgit2_init-1" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">show</span>  <span class="o">=</span> <span class="n">GIT_STATUS_SHOW_INDEX_AND_WORKDIR</span><span class="p">;</span>
+  <span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX</span> <span class="o">|</span>
+    <span class="n">GIT_STATUS_OPT_SORT_CASE_SENSITIVELY</span><span class="p">;</span>
+
+  <span class="n">parse_opts</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>Try to open the repository at the given path (or at the current
+directory if none was given).</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-5" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_is_bare-9" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_is_bare">git_repository_is_bare</a></span><span class="p">(</span><span class="n">repo</span><span class="p">))</span>
+    <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Cannot report status on bare repository&quot;</span><span class="p">,</span>
+      <span class="n"><a name="git_repository_path-8" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">));</span>
+
+<span class="nl">show_status:</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\033</span><span class="s">[H</span><span class="se">\033</span><span class="s">[2J&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>Run status on the repository</p>
+
+<p>We use <code><a name="git_status_list_new-12" class="fnlink" href="../../#v0.25.1/group/status/git_status_list_new">git_status_list_new</a>()</code> to generate a list of status
+information which lets us iterate over it at our
+convenience and extract the data we want to show out of
+each entry.</p>
+
+<p>You can use <code><a name="git_status_foreach-10" class="fnlink" href="../../#v0.25.1/group/status/git_status_foreach">git_status_foreach</a>()</code> or
+<code><a name="git_status_foreach_ext-11" class="fnlink" href="../../#v0.25.1/group/status/git_status_foreach_ext">git_status_foreach_ext</a>()</code> if you&#39;d prefer to execute a
+callback for each entry. The latter gives you more control
+about what results are presented.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_status_list_new-13" class="fnlink" href="../../#v0.25.1/group/status/git_status_list_new">git_status_list_new</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">status</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">o</span><span class="p">.</span><span class="n">statusopt</span><span class="p">),</span>
+    <span class="s">&quot;Could not get status&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showbranch</span><span class="p">)</span>
+    <span class="n">show_branch</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">format</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">showsubmod</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">int</span> <span class="n">submod_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_submodule_foreach-23" class="fnlink" href="../../#v0.25.1/group/submodule/git_submodule_foreach">git_submodule_foreach</a></span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">print_submod</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">submod_count</span><span class="p">),</span>
+      <span class="s">&quot;Cannot iterate submodules&quot;</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">repodir</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">print_long</span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">print_short</span><span class="p">(</span><span class="n">repo</span><span class="p">,</span> <span class="n">status</span><span class="p">);</span>
+
+  <span class="n"><a name="git_status_list_free-22" class="fnlink" href="../../#v0.25.1/group/status/git_status_list_free">git_status_list_free</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">sleep</span><span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">repeat</span><span class="p">);</span>
+    <span class="k">goto</span> <span class="n">show_status</span><span class="p">;</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_repository_free-6" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-2" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>If the user asked for the branch, let&#39;s show the short name of the
+branch.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">show_branch</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">format</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">error</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">git_reference</span> <span class="o">*</span><span class="n">head</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+  <span class="n">error</span> <span class="o">=</span> <span class="n"><a name="git_repository_head-7" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_head">git_repository_head</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">head</span><span class="p">,</span> <span class="n">repo</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">error</span> <span class="o">==</span> <span class="n">GIT_EUNBORNBRANCH</span> <span class="o">||</span> <span class="n">error</span> <span class="o">==</span> <span class="n">GIT_ENOTFOUND</span><span class="p">)</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">branch</span> <span class="o">=</span> <span class="n"><a name="git_reference_shorthand-4" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_shorthand">git_reference_shorthand</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span>
+    <span class="n">check_lg2</span><span class="p">(</span><span class="n">error</span><span class="p">,</span> <span class="s">&quot;failed to get current branch&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# On branch %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+      <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;Not currently on any branch.&quot;</span><span class="p">);</span>
+  <span class="k">else</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;## %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">branch</span> <span class="o">?</span> <span class="n">branch</span> <span class="o">:</span> <span class="s">&quot;HEAD (no branch)&quot;</span><span class="p">);</span>
+
+  <span class="n"><a name="git_reference_free-3" class="fnlink" href="../../#v0.25.1/group/reference/git_reference_free">git_reference_free</a></span><span class="p">(</span><span class="n">head</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>This function print out an output similar to git&#39;s status command
+in long form, including the command-line hints.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_long</span><span class="p">(</span><span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-14" class="fnlink" href="../../#v0.25.1/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">old_path</span><span class="p">,</span> <span class="o">*</span><span class="n">new_path</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>Print index changes.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">istatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-16" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">rm_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;new file: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes to be committed:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git reset HEAD &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to unstage)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changes_in_index</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>Print workdir changes to tracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">wstatus</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-17" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>With <code>GIT_STATUS_OPT_INCLUDE_UNMODIFIED</code> (not used in this example)
+<code>index_to_workdir</code> may not be <code>NULL</code> even if there are
+no differences, in which case it will be a <code>GIT_DELTA_UNMODIFIED</code>.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span> <span class="o">||</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>Print out the output since we know the file has some changes</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;modified: &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;deleted:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;renamed:  &quot;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="s">&quot;typechange:&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Changes not staged for commit:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add%s &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to update what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">rm_in_workdir</span> <span class="o">?</span> <span class="s">&quot;/rm&quot;</span> <span class="o">:</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git checkout -- &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to discard changes in working directory)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+      <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="n">old_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="n">new_path</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">old_path</span> <span class="o">&amp;&amp;</span> <span class="n">new_path</span> <span class="o">&amp;&amp;</span> <span class="n">strcmp</span><span class="p">(</span><span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">))</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s -&gt; %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span><span class="p">,</span> <span class="n">new_path</span><span class="p">);</span>
+    <span class="k">else</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s  %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">old_path</span> <span class="o">?</span> <span class="n">old_path</span> <span class="o">:</span> <span class="n">new_path</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">changed_in_workdir</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>Print untracked files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-18" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Untracked files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">header</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Print ignored files.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-19" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">header</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Ignored files:</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#   (use </span><span class="se">\&quot;</span><span class="s">git add -f &lt;file&gt;...</span><span class="se">\&quot;</span><span class="s"> to include in what will be committed)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+        <span class="n">header</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="p">}</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;#</span><span class="se">\t</span><span class="s">%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">changes_in_index</span> <span class="o">&amp;&amp;</span> <span class="n">changed_in_workdir</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;no changes added to commit (use </span><span class="se">\&quot;</span><span class="s">git add</span><span class="se">\&quot;</span><span class="s"> and/or </span><span class="se">\&quot;</span><span class="s">git commit -a</span><span class="se">\&quot;</span><span class="s">)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>This version of the output prefixes each path with two status
+columns and shows submodule status information.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_short</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="n">git_status_list</span> <span class="o">*</span><span class="n">status</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">maxi</span> <span class="o">=</span> <span class="n"><a name="git_status_list_entrycount-15" class="fnlink" href="../../#v0.25.1/group/status/git_status_list_entrycount">git_status_list_entrycount</a></span><span class="p">(</span><span class="n">status</span><span class="p">);</span>
+  <span class="k">const</span> <span class="n">git_status_entry</span> <span class="o">*</span><span class="n">s</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">extra</span><span class="p">,</span> <span class="o">*</span><span class="n">a</span><span class="p">,</span> <span class="o">*</span><span class="n">b</span><span class="p">,</span> <span class="o">*</span><span class="n">c</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-20" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_CURRENT</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span>
+
+    <span class="n">a</span> <span class="o">=</span> <span class="n">b</span> <span class="o">=</span> <span class="n">c</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="n">istatus</span> <span class="o">=</span> <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39; &#39;</span><span class="p">;</span>
+    <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_NEW</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;A&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_MODIFIED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_DELETED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_RENAMED</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_INDEX_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39; &#39;</span><span class="p">)</span>
+        <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;?&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_MODIFIED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;M&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_DELETED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;D&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_RENAMED</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;R&#39;</span><span class="p">;</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_WT_TYPECHANGE</span><span class="p">)</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;T&#39;</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">&amp;</span> <span class="n">GIT_STATUS_IGNORED</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">istatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+      <span class="n">wstatus</span> <span class="o">=</span> <span class="sc">&#39;!&#39;</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;?&#39;</span><span class="p">)</span>
+      <span class="k">continue</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>A commit in a tree is how submodules are stored, so
+let&#39;s go take a look at its status.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span> <span class="o">&amp;&amp;</span>
+      <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">mode</span> <span class="o">==</span> <span class="n">GIT_FILEMODE_COMMIT</span><span class="p">)</span>
+    <span class="p">{</span>
+      <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">smstatus</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n"><a name="git_submodule_status-26" class="fnlink" href="../../#v0.25.1/group/submodule/git_submodule_status">git_submodule_status</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">smstatus</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">,</span>
+              <span class="n">GIT_SUBMODULE_IGNORE_UNSPECIFIED</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (new commits)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_WD_MODIFIED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (modified content)&quot;</span><span class="p">;</span>
+        <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">smstatus</span> <span class="o">&amp;</span> <span class="n">GIT_SUBMODULE_STATUS_WD_UNTRACKED</span><span class="p">)</span>
+          <span class="n">extra</span> <span class="o">=</span> <span class="s">&quot; (untracked content)&quot;</span><span class="p">;</span>
+      <span class="p">}</span>
+    <span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Now that we have all the information, format the output.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">head_to_index</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">a</span><span class="p">)</span>
+        <span class="n">a</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">b</span><span class="p">)</span>
+        <span class="n">b</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+      <span class="n">c</span> <span class="o">=</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">new_file</span><span class="p">.</span><span class="n">path</span><span class="p">;</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">istatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">wstatus</span> <span class="o">==</span> <span class="sc">&#39;R&#39;</span><span class="p">)</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">c</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+      <span class="k">else</span>
+        <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c%c %s%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">istatus</span><span class="p">,</span> <span class="n">wstatus</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">extra</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">maxi</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">s</span> <span class="o">=</span> <span class="n"><a name="git_status_byindex-21" class="fnlink" href="../../#v0.25.1/group/status/git_status_byindex">git_status_byindex</a></span><span class="p">(</span><span class="n">status</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">s</span><span class="o">-&gt;</span><span class="n">status</span> <span class="o">==</span> <span class="n">GIT_STATUS_WT_NEW</span><span class="p">)</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;?? %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">s</span><span class="o">-&gt;</span><span class="n">index_to_workdir</span><span class="o">-&gt;</span><span class="n">old_file</span><span class="p">.</span><span class="n">path</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">int</span> <span class="nf">print_submod</span><span class="p">(</span><span class="n">git_submodule</span> <span class="o">*</span><span class="n">sm</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">payload</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="o">*</span><span class="n">count</span> <span class="o">=</span> <span class="n">payload</span><span class="p">;</span>
+  <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">name</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">count</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# Submodules</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">(</span><span class="o">*</span><span class="n">count</span><span class="p">)</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;# - submodule &#39;%s&#39; at %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+    <span class="n"><a name="git_submodule_name-24" class="fnlink" href="../../#v0.25.1/group/submodule/git_submodule_name">git_submodule_name</a></span><span class="p">(</span><span class="n">sm</span><span class="p">),</span> <span class="n"><a name="git_submodule_path-25" class="fnlink" href="../../#v0.25.1/group/submodule/git_submodule_path">git_submodule_path</a></span><span class="p">(</span><span class="n">sm</span><span class="p">));</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse options that git&#39;s status command supports.</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
+<span class="p">{</span>
+  <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&lt;</span> <span class="n">MAX_PATHSPEC</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">[</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">fatal</span><span class="p">(</span><span class="s">&quot;Example only supports a limited pathspec&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-s&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--short&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_SHORT</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--long&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--porcelain&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-b&quot;</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--branch&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-z&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">zterm</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+        <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_PORCELAIN</span><span class="p">;</span>
+    <span class="p">}</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignored&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_IGNORED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uno&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=no&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-unormal&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=normal&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;-uall&quot;</span><span class="p">)</span> <span class="o">||</span>
+         <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--untracked-files=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_INCLUDE_UNTRACKED</span> <span class="o">|</span>
+        <span class="n">GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--ignore-submodules=all&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_STATUS_OPT_EXCLUDE_SUBMODULES</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strncmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--git-dir=&quot;</span><span class="p">,</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">)))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repodir</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">strlen</span><span class="p">(</span><span class="s">&quot;--git-dir=&quot;</span><span class="p">);</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">repeat</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;--repeat&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
+      <span class="cm">/* okay */</span><span class="p">;</span>
+    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;--list-submodules&quot;</span><span class="p">))</span>
+      <span class="n">o</span><span class="o">-&gt;</span><span class="n">showsubmod</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="k">else</span>
+      <span class="n">check_lg2</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&quot;Unsupported option&quot;</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_DEFAULT</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">=</span> <span class="n">FORMAT_LONG</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">format</span> <span class="o">==</span> <span class="n">FORMAT_LONG</span><span class="p">)</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">showbranch</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">strings</span> <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">pathspec</span><span class="p">;</span>
+    <span class="n">o</span><span class="o">-&gt;</span><span class="n">statusopt</span><span class="p">.</span><span class="n">pathspec</span><span class="p">.</span><span class="n">count</span>   <span class="o">=</span> <span class="n">o</span><span class="o">-&gt;</span><span class="n">npaths</span><span class="p">;</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/ex/v0.25.1/tag.html b/ex/v0.25.1/tag.html
new file mode 100644
index 0000000..32f1242
--- /dev/null
+++ b/ex/v0.25.1/tag.html
@@ -0,0 +1,514 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="content-type" content="text/html;charset=utf-8">
+  <title>tag.c</title>
+  <link rel="stylesheet" href="../css.css">
+  <style type="text/css">
+    a.fnlink {text-decoration: none}
+    a.fnlink:hover {text-decoration: underline}
+  </style>
+</head>
+<body>
+<div id='container'>
+  <div id="background"></div>
+  <div id="jump_to">
+    Jump To &hellip;
+    <div id="jump_wrapper">
+      <div id="jump_page">
+        <a class="source" href="../../#v0.25.1">API Docs</a>
+          <a class="source" href="add.html">add.c</a>
+          <a class="source" href="blame.html">blame.c</a>
+          <a class="source" href="cat-file.html">cat-file.c</a>
+          <a class="source" href="common.html">common.c</a>
+          <a class="source" href="describe.html">describe.c</a>
+          <a class="source" href="diff.html">diff.c</a>
+          <a class="source" href="for-each-ref.html">for-each-ref.c</a>
+          <a class="source" href="general.html">general.c</a>
+          <a class="source" href="init.html">init.c</a>
+          <a class="source" href="log.html">log.c</a>
+          <a class="source" href="network/clone.html">clone.c</a>
+          <a class="source" href="network/common.html">common.c</a>
+          <a class="source" href="network/fetch.html">fetch.c</a>
+          <a class="source" href="network/git2.html">git2.c</a>
+          <a class="source" href="network/index-pack.html">index-pack.c</a>
+          <a class="source" href="network/ls-remote.html">ls-remote.c</a>
+          <a class="source" href="remote.html">remote.c</a>
+          <a class="source" href="rev-list.html">rev-list.c</a>
+          <a class="source" href="rev-parse.html">rev-parse.c</a>
+          <a class="source" href="showindex.html">showindex.c</a>
+          <a class="source" href="status.html">status.c</a>
+          <a class="source" href="tag.html">tag.c</a>
+      </div>
+    </div>
+  </div>
+  <table cellspacing=0 cellpadding=0>
+  <thead>
+    <tr>
+      <th class=docs><h1>tag.c</h1></th>
+      <th class=code></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr id='section-1'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-1">&#182;</a>
+        </div>
+        
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="cm">/*</span>
+<span class="cm"> * libgit2 &quot;tag&quot; example - shows how to list, create and delete tags</span>
+<span class="cm"> *</span>
+<span class="cm"> * Written by the libgit2 contributors</span>
+<span class="cm"> *</span>
+<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span>
+<span class="cm"> * and related and neighboring rights to this software to the public domain</span>
+<span class="cm"> * worldwide. This software is distributed without any warranty.</span>
+<span class="cm"> *</span>
+<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span>
+<span class="cm"> * with this software. If not, see</span>
+<span class="cm"> * &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;.</span>
+<span class="cm"> */</span>
+
+<span class="cp">#include &quot;common.h&quot;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-2'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-2">&#182;</a>
+        </div>
+        <p>The following example partially reimplements the <code>git tag</code> command
+and some of its options.</p>
+
+<p>These commands should work:</p>
+
+<ul>
+<li>Tag name listing (<code>tag</code>)</li>
+<li>Filtered tag listing with messages (<code>tag -n3 -l &quot;v0.1*&quot;</code>)</li>
+<li>Lightweight tag creation (<code>tag test v0.18.0</code>)</li>
+<li>Tag creation (<code>tag -a -m &quot;Test message&quot; test v0.18.0</code>)</li>
+<li>Tag deletion (<code>tag -d test</code>)</li>
+</ul>
+
+<p>The command line parsing logic is simplified and doesn&#39;t handle
+all of the use cases.</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre></pre></div>
+      </td>
+    </tr>
+    <tr id='section-3'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-3">&#182;</a>
+        </div>
+        <p>tag_options represents the parsed command line options</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">tag_name</span><span class="p">;</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num_lines</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">force</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_options</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-4'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-4">&#182;</a>
+        </div>
+        <p>tag_state represents the current program state for dragging around</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">;</span>
+<span class="p">}</span> <span class="n">tag_state</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-5'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-5">&#182;</a>
+        </div>
+        <p>An action to execute based on the command line arguments</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">typedef</span> <span class="nf">void</span> <span class="p">(</span><span class="o">*</span><span class="n">tag_action</span><span class="p">)(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">);</span>
+<span class="k">typedef</span> <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args_info</span><span class="p">;</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">check</span><span class="p">(</span><span class="kt">int</span> <span class="n">result</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">if</span> <span class="p">(</span><span class="n">result</span><span class="p">)</span> <span class="n">fatal</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-6'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-6">&#182;</a>
+        </div>
+        <p>Tag listing: Print individual message lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_list_lines</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">msg</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-7'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-7">&#182;</a>
+        </div>
+        <p>first line - headline</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-8'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-8">&#182;</a>
+        </div>
+        <p>skip over new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-9'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-9">&#182;</a>
+        </div>
+        <p>print just headline?</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">num</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
+  <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-10'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-10">&#182;</a>
+        </div>
+        <p>print individual commit/tag lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>  <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="n">num</span><span class="o">--</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;    &quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">!=</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%c&quot;</span><span class="p">,</span> <span class="o">*</span><span class="n">msg</span><span class="o">++</span><span class="p">);</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-11'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-11">&#182;</a>
+        </div>
+        <p>handle consecutive new lines</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre>    <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span> <span class="o">&amp;&amp;</span> <span class="n">msg</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">num</span><span class="o">--</span><span class="p">;</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="k">while</span><span class="p">(</span><span class="o">*</span><span class="n">msg</span> <span class="o">&amp;&amp;</span> <span class="o">*</span><span class="n">msg</span> <span class="o">==</span> <span class="sc">&#39;\n&#39;</span><span class="p">)</span> <span class="n">msg</span><span class="o">++</span><span class="p">;</span>
+
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-12'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-12">&#182;</a>
+        </div>
+        <p>Tag listing: Print an actual tag object</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">git_tag</span> <span class="o">*</span><span class="n">tag</span><span class="p">,</span> <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n"><a name="git_tag_name-20" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_name">git_tag_name</a></span><span class="p">(</span><span class="n">tag</span><span class="p">));</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_tag_message-21" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_message">git_tag_message</a></span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-13'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-13">&#182;</a>
+        </div>
+        <p>Tag listing: Print a commit (target of a lightweight tag)</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_commit</span><span class="p">(</span><span class="n">git_commit</span> <span class="o">*</span><span class="n">commit</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span>
+    <span class="k">const</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%-16s&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">msg</span> <span class="o">=</span> <span class="n"><a name="git_commit_message-2" class="fnlink" href="../../#v0.25.1/group/commit/git_commit_message">git_commit_message</a></span><span class="p">(</span><span class="n">commit</span><span class="p">);</span>
+    <span class="n">print_list_lines</span><span class="p">(</span><span class="n">msg</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-14'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-14">&#182;</a>
+        </div>
+        <p>Tag listing: Fallback, should not happen</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print_name</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;%s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-15'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-15">&#182;</a>
+        </div>
+        <p>Tag listing: Lookup tags based on ref name and dispatch to print</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">int</span> <span class="nf">each_tag</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">name</span><span class="p">,</span> <span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-13" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
+
+  <span class="k">switch</span> <span class="p">(</span><span class="n"><a name="git_object_type-6" class="fnlink" href="../../#v0.25.1/group/object/git_object_type">git_object_type</a></span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_TAG</span>:
+      <span class="n">print_tag</span><span class="p">((</span><span class="n">git_tag</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="n">GIT_OBJ_COMMIT</span>:
+      <span class="n">print_commit</span><span class="p">((</span><span class="n">git_commit</span> <span class="o">*</span><span class="p">)</span> <span class="n">obj</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
+      <span class="k">break</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">print_name</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_object_free-7" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_list_tags</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">pattern</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">;</span>
+  <span class="n">git_strarray</span> <span class="n">tag_names</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_list_match-25" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_list_match">git_tag_list_match</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">,</span> <span class="n">pattern</span> <span class="o">?</span> <span class="n">pattern</span> <span class="o">:</span> <span class="s">&quot;*&quot;</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get list of tags&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">tag_names</span><span class="p">.</span><span class="n">count</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">each_tag</span><span class="p">(</span><span class="n">tag_names</span><span class="p">.</span><span class="n">strings</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">state</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n"><a name="git_strarray_free-19" class="fnlink" href="../../#v0.25.1/group/strarray/git_strarray_free">git_strarray_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tag_names</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_delete_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">obj</span><span class="p">;</span>
+  <span class="n">git_buf</span> <span class="n">abbrev_oid</span> <span class="o">=</span> <span class="p">{</span><span class="mi">0</span><span class="p">};</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-14" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj</span><span class="p">,</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Failed to lookup rev&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_object_short_id-5" class="fnlink" href="../../#v0.25.1/group/object/git_object_short_id">git_object_short_id</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">,</span> <span class="n">obj</span><span class="p">),</span>
+      <span class="s">&quot;Unable to get abbreviated OID&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_delete-24" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_delete">git_tag_delete</a></span><span class="p">(</span><span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">),</span>
+      <span class="s">&quot;Unable to delete tag&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">);</span>
+
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Deleted tag &#39;%s&#39; (was %s)</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="n">abbrev_oid</span><span class="p">.</span><span class="n">ptr</span><span class="p">);</span>
+
+  <span class="n"><a name="git_buf_free-1" class="fnlink" href="../../#v0.25.1/group/buf/git_buf_free">git_buf_free</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">abbrev_oid</span><span class="p">);</span>
+  <span class="n"><a name="git_object_free-8" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">obj</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_lighweight_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">,</span> <span class="s">&quot;Target required&quot;</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-15" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create_lightweight-23" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_create_lightweight">git_tag_create_lightweight</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-9" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">action_create_tag</span><span class="p">(</span><span class="n">tag_state</span> <span class="o">*</span><span class="n">state</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span> <span class="o">=</span> <span class="n">state</span><span class="o">-&gt;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">git_signature</span> <span class="o">*</span><span class="n">tagger</span><span class="p">;</span>
+  <span class="n">git_oid</span> <span class="n">oid</span><span class="p">;</span>
+  <span class="n">git_object</span> <span class="o">*</span><span class="n">target</span><span class="p">;</span>
+
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="s">&quot;Name required&quot;</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="s">&quot;Message required&quot;</span><span class="p">);</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="s">&quot;HEAD&quot;</span><span class="p">;</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_revparse_single-16" class="fnlink" href="../../#v0.25.1/group/revparse/git_revparse_single">git_revparse_single</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">target</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">),</span>
+      <span class="s">&quot;Unable to resolve spec&quot;</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_signature_default-17" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">tagger</span><span class="p">,</span> <span class="n">repo</span><span class="p">),</span>
+      <span class="s">&quot;Unable to create signature&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_tag_create-22" class="fnlink" href="../../#v0.25.1/group/tag/git_tag_create">git_tag_create</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">oid</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span>
+        <span class="n">target</span><span class="p">,</span> <span class="n">tagger</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span><span class="p">),</span> <span class="s">&quot;Unable to create tag&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n"><a name="git_object_free-10" class="fnlink" href="../../#v0.25.1/group/object/git_object_free">git_object_free</a></span><span class="p">(</span><span class="n">target</span><span class="p">);</span>
+  <span class="n"><a name="git_signature_free-18" class="fnlink" href="../../#v0.25.1/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">tagger</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="k">static</span> <span class="kt">void</span> <span class="nf">print_usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;usage: see `git help tag`</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-16'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-16">&#182;</a>
+        </div>
+        <p>Parse command line arguments and choose action to run when done</p>
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_options</span><span class="p">(</span><span class="n">tag_action</span> <span class="o">*</span><span class="n">action</span><span class="p">,</span> <span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span>
+  <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+
+  <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">curr</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">curr</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">&#39;-&#39;</span><span class="p">)</span> <span class="p">{</span>
+      <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span><span class="p">)</span>
+        <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span> <span class="o">=</span> <span class="n">curr</span><span class="p">;</span>
+      <span class="k">else</span>
+        <span class="n">print_usage</span><span class="p">();</span>
+
+      <span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">action</span> <span class="o">!=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">)</span>
+        <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_lighweight_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-a&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">curr</span><span class="p">,</span> <span class="s">&quot;-f&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_int_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-n&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-l&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_list_tags</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-d&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_delete_tag</span><span class="p">;</span>
+    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">args</span><span class="p">,</span> <span class="s">&quot;-m&quot;</span><span class="p">))</span> <span class="p">{</span>
+      <span class="o">*</span><span class="n">action</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">action_create_tag</span><span class="p">;</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+    <tr id='section-17'>
+      <td class=docs>
+        <div class="pilwrap">
+          <a class="pilcrow" href="#section-17">&#182;</a>
+        </div>
+        <p>Initialize tag_options struct</p>
+
+      </td>
+      <td class=code>
+        <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">tag_options_init</span><span class="p">(</span><span class="n">tag_options</span> <span class="o">*</span><span class="n">opts</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">memset</span><span class="p">(</span><span class="n">opts</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="o">*</span><span class="n">opts</span><span class="p">));</span>
+
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">message</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">pattern</span>   <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">tag_name</span>  <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">target</span>    <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">num_lines</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+  <span class="n">opts</span><span class="o">-&gt;</span><span class="n">force</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">;</span>
+  <span class="n">tag_options</span> <span class="n">opts</span><span class="p">;</span>
+  <span class="n">tag_action</span> <span class="n">action</span><span class="p">;</span>
+  <span class="n">tag_state</span> <span class="n">state</span><span class="p">;</span>
+
+  <span class="n"><a name="git_libgit2_init-3" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_init">git_libgit2_init</a></span><span class="p">();</span>
+
+  <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_open_ext-11" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_open_ext">git_repository_open_ext</a></span><span class="p">(</span><span class="o">&amp;</span><span class="n">repo</span><span class="p">,</span> <span class="s">&quot;.&quot;</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">),</span>
+      <span class="s">&quot;Could not open repository&quot;</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">tag_options_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opts</span><span class="p">);</span>
+  <span class="n">parse_options</span><span class="p">(</span><span class="o">&amp;</span><span class="n">action</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span>
+
+  <span class="n">state</span><span class="p">.</span><span class="n">repo</span> <span class="o">=</span> <span class="n">repo</span><span class="p">;</span>
+  <span class="n">state</span><span class="p">.</span><span class="n">opts</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">opts</span><span class="p">;</span>
+  <span class="n">action</span><span class="p">(</span><span class="o">&amp;</span><span class="n">state</span><span class="p">);</span>
+
+  <span class="n"><a name="git_repository_free-12" class="fnlink" href="../../#v0.25.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span>
+  <span class="n"><a name="git_libgit2_shutdown-4" class="fnlink" href="../../#v0.25.1/group/libgit2/git_libgit2_shutdown">git_libgit2_shutdown</a></span><span class="p">();</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span></pre></div>
+      </td>
+    </tr>
+  </table>
+</div>
+</body>
diff --git a/project.json b/project.json
index 6b72ca7..f3eb470 100644
--- a/project.json
+++ b/project.json
@@ -1 +1 @@
-{"versions":["HEAD","v0.24.2","v0.24.1","v0.24.0","v0.23.4","v0.23.3","v0.23.2","v0.23.1","v0.23.0","v0.22.3","v0.22.2","v0.22.1","v0.22.0","v0.21.5","v0.21.4","v0.21.3","v0.21.2","v0.21.1","v0.21.0","v0.20.0","v0.19.0","v0.18.0","v0.17.0","v0.16.0","v0.15.0","v0.14.0","v0.13.0","v0.12.0","v0.11.0","v0.10.0","v0.8.0","v0.3.0","v0.2.0","v0.1.0"],"github":"libgit2/libgit2","name":"libgit2","signatures":{"git_blob_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_blob_set_rawcontent_fromfile":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_blob_rawcontent":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_blob_rawsize":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_blob_writefile":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_message_short":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.1.0"],"changes":{}},"git_commit_message":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_time":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_committer":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_author":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_tree":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.10.0":true,"v0.18.0":true}},"git_commit_parentcount":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_parent":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.10.0":true,"v0.19.0":true}},"git_commit_add_parent":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_set_message":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_set_committer":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_commit_set_author":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_commit_set_tree":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_index_open_bare":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_index_open_inrepo":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_index_clear":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_read":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_index_write":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_find":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_index_add":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_index_remove":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_index_insert":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.1.0"],"changes":{}},"git_index_get":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{"v0.13.0":true}},"git_index_entrycount":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_object_write":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_object_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.10.0":true}},"git_object_type":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.10.0":true}},"git_object_owner":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.10.0":true}},"git_object_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_type2string":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_string2type":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_typeisloose":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_open":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_add_backend":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.10.0":true}},"git_odb_close":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.1.0"],"changes":{}},"git_odb_read":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.11.0":true}},"git_odb_read_header":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_odb_write":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_odb_exists":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rawobj_hash":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.2.0"],"changes":{}},"git_rawobj_close":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.2.0"],"changes":{}},"git_repository_open":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_open2":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.2.0"],"changes":{}},"git_repository_lookup":{"exists":["v0.2.0","v0.3.0","v0.1.0"],"changes":{}},"git_repository_database":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.1.0"],"changes":{}},"git_repository_index":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true}},"git_repository_newobject":{"exists":["v0.2.0","v0.3.0","v0.1.0"],"changes":{}},"git_repository_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_new":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_reset":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_push":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.10.0":true}},"git_revwalk_hide":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.10.0":true}},"git_revwalk_next":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.8.0":true,"v0.10.0":true}},"git_revwalk_sorting":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_repository":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tag_target":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.10.0":true,"v0.18.0":true}},"git_tag_type":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{}},"git_tag_name":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tag_tagger":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tag_message":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tag_set_target":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_set_name":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_set_tagger":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_tag_set_message":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tree_entry_byname":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_tree_entry_byindex":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.13.0":true,"v0.24.2":true}},"git_tree_entry_attributes":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{"v0.12.0":true}},"git_tree_entry_name":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.12.0":true}},"git_tree_entry_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.12.0":true}},"git_tree_entry_2object":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.1.0"],"changes":{"v0.11.0":true,"v0.12.0":true}},"git_tree_add_entry":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_tree_remove_entry_byindex":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_remove_entry_byname":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_id":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_name":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_attributes":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.10.0":true}},"git_strerror":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.1.0"],"changes":{}},"git_odb__read_packed":{"exists":["v0.1.0"],"changes":{}},"git_odb__read_loose":{"exists":["v0.1.0"],"changes":{}},"git_obj_close":{"exists":["v0.1.0"],"changes":{}},"git_obj_type_to_string":{"exists":["v0.1.0"],"changes":{}},"git_obj_string_to_type":{"exists":["v0.1.0"],"changes":{}},"git_obj__loose_object_type":{"exists":["v0.1.0"],"changes":{}},"git_obj_hash":{"exists":["v0.1.0"],"changes":{}},"git_oid_mkstr":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_oid_mkraw":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_oid_fmt":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_pathfmt":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_allocfmt":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.1.0"],"changes":{}},"git_oid_cpy":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_cmp":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_time_offset":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_object_lookup":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_new":{"exists":["v0.10.0","v0.8.0"],"changes":{}},"git_object_close":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.8.0"],"changes":{}},"git_odb_add_alternate":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_lookup":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_create_symbolic":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{"v0.14.0":true}},"git_reference_create_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{"v0.14.0":true}},"git_reference_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_reference_target":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reference_type":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reference_name":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reference_resolve":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reference_owner":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reference_set_target":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.21.2":true,"v0.23.0":true}},"git_reference_set_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_reference_rename":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true,"v0.18.0":true,"v0.21.2":true,"v0.23.0":true}},"git_reference_delete":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_packall":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_repository_open3":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.3.0"],"changes":{}},"git_repository_init":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_signature_new":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.11.0":true,"v0.15.0":true}},"git_signature_dup":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_signature_free":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_clear_entries":{"exists":["v0.8.0","v0.10.0","v0.3.0"],"changes":{}},"git_reference_new":{"exists":["v0.3.0"],"changes":{}},"git_reference_write":{"exists":["v0.3.0"],"changes":{}},"git_reference_set_name":{"exists":["v0.3.0"],"changes":{}},"git_repository_lookup_ref":{"exists":["v0.3.0"],"changes":{}},"git_tree_add_entry_unsorted":{"exists":["v0.3.0"],"changes":{}},"git_tree_sort_entries":{"exists":["v0.3.0"],"changes":{}},"git_oid_shorten_add":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_shorten_free":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_listall":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.10.0"],"changes":{}},"git_repository_close":{"exists":["v0.10.0"],"changes":{}},"git_tag_target_oid":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.10.0"],"changes":{}},"git_blob_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_blob_create_fromfile":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.11.0"],"changes":{}},"git_commit_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_commit_create":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true,"v0.15.0":true,"v0.24.2":true}},"git_commit_create_o":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_commit_create_ov":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_commit_create_v":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true,"v0.15.0":true,"v0.24.2":true}},"git_odb_open_rstream":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_odb_object_id":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_data":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_type":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_listcb":{"exists":["v0.12.0","v0.11.0"],"changes":{}},"git_tag_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_tag_create":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true}},"git_tag_create_o":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_tree_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_commit_tree_oid":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_commit_parent_oid":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_add2":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_append":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_append2":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_reference_create_symbolic_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_reference_create_oid_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_reference_rename_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_repository_is_empty":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_path":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.13.0":true,"v0.16.0":true}},"git_repository_workdir":{"exists":["v0.12.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_signature_now":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.15.0":true}},"git_tag_create_frombuffer":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true}},"git_tag_create_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_tag_create_fo":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_tag_delete":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_list":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_create_fromindex":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_treebuilder_create":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.12.0"],"changes":{}},"git_treebuilder_clear":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_free":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_get":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_insert":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_treebuilder_remove":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_filter":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_treebuilder_write":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.22.0":true}},"git_blob_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_commit_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_libgit2_version":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_find_global":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_config_open_global":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_config_file__ondisk":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_config_new":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_add_file":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_config_add_file_ondisk":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true}},"git_config_open_ondisk":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_free":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_get_int":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_get_long":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_get_bool":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_get_string":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_set_int":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_set_long":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_set_bool":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_set_string":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_foreach":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.14.0":true,"v0.18.0":true}},"git_lasterror":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.13.0"],"changes":{}},"git_index_open":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_entrycount_unmerged":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_get_unmerged_bypath":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_get_unmerged_byindex":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_entry_stage":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_odb_read_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_oid_fromstr":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_fromraw":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_ncmp":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_reference_foreach":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true}},"git_repository_is_bare":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_config":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true}},"git_tag_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_tree_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_tree_entrycount":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_tree_entry_type":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_delete":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_clearerror":{"exists":["v0.15.0","v0.16.0","v0.14.0"],"changes":{}},"git_index_uniq":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_odb_hashfile":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_read":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true}},"git_reflog_write":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_reflog_entrycount":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_entry_byindex":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_reflog_entry_oidold":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_entry_oidnew":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_entry_committer":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_entry_msg":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_free":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_src":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_dst":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_src_match":{"exists":["v0.15.0","v0.16.0","v0.14.0"],"changes":{}},"git_refspec_transform":{"exists":["v0.14.0","v0.15.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_get":{"exists":["v0.15.0","v0.14.0"],"changes":{}},"git_remote_name":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_url":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_fetchspec":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.14.0"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_pushspec":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.14.0"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_connect":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true,"v0.23.0":true,"v0.24.0":true,"v0.23.3":true,"v0.24.2":true,"HEAD":true}},"git_remote_free":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true}},"git_repository_head_detached":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_head_orphan":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.14.0"],"changes":{}},"git_status_foreach":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_status_file":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_create_lightweight":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_list_match":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_new":{"exists":["v0.14.0","v0.15.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_commit_message_encoding":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_config_find_system":{"exists":["v0.15.0","v0.16.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_config_get_int32":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_get_int64":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_set_int32":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_set_int64":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_indexer_new":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true,"v0.21.2":true}},"git_indexer_run":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{}},"git_indexer_write":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{}},"git_indexer_hash":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_indexer_free":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_new":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{"v0.16.0":true,"v0.17.0":true}},"git_remote_negotiate":{"exists":["v0.15.0"],"changes":{}},"git_remote_download":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true,"v0.20.0":true,"v0.22.0":true,"v0.23.0":true}},"git_remote_update_tips":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.16.0":true,"v0.17.0":true,"v0.18.0":true,"v0.21.2":true,"v0.23.0":true}},"git_repository_head":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_config_autoload":{"exists":["v0.15.0"],"changes":{}},"git_attr_get":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true}},"git_attr_foreach":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_attr_cache_flush":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_attr_add_macro":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_read_tree":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_odb_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_streq":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_rename":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_reflog_delete":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_reference_is_packed":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_reference_reload":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_reference_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_load":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_remote_ls":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_remote_connected":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_disconnect":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_valid_url":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_repository_set_workdir":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_repository_set_config":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_odb":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_odb":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_index":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_should_ignore":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.17.0":true}},"git_tag_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_threads_init":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_threads_shutdown":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_tree_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_get_subtree":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_tree_walk":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tree_diff":{"exists":["v0.16.0"],"changes":{}},"gitwin_set_codepage":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"gitwin_get_codepage":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"gitwin_set_utf8":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_blob_create_fromdisk":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_delete":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_branch_list":{"exists":["v0.17.0"],"changes":{}},"git_branch_move":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.21.2":true,"v0.23.0":true}},"git_config_get_multivar":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_config_set_multivar":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_list_free":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{}},"git_diff_tree_to_tree":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true}},"git_diff_index_to_tree":{"exists":["v0.17.0"],"changes":{}},"git_diff_workdir_to_index":{"exists":["v0.17.0"],"changes":{}},"git_diff_workdir_to_tree":{"exists":["v0.17.0"],"changes":{}},"git_diff_merge":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_diff_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true,"v0.23.0":true}},"git_diff_print_compact":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_diff_print_patch":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_diff_blobs":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true,"v0.20.0":true,"v0.23.0":true}},"giterr_last":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"giterr_clear":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_indexer_stream_new":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_finalize":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_hash":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_free":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{}},"git_merge_base":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_note_read":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_message":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_note_oid":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_note_create":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.22.0":true}},"git_note_remove":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_note_free":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_default_ref":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.17.0"],"changes":{}},"git_note_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_oid_iszero":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_name_to_oid":{"exists":["v0.17.0"],"changes":{}},"git_reference_list":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_reference_cmp":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_refspec_src_matches":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_save":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.17.0"],"changes":{}},"git_remote_set_fetchspec":{"exists":["v0.18.0","v0.17.0"],"changes":{}},"git_remote_set_pushspec":{"exists":["v0.18.0","v0.17.0"],"changes":{}},"git_remote_supported_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.17.0"],"changes":{}},"git_remote_list":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_add":{"exists":["v0.17.0"],"changes":{}},"git_repository_open_ext":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_revwalk_push_glob":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_push_head":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_hide_glob":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_hide_head":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_push_ref":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_hide_ref":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_foreach_ext":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_submodule_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true,"v0.24.0":true,"v0.23.3":true,"v0.24.2":true}},"git_submodule_lookup":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_peel":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.18.0":true}},"git_tree_entry_to_object":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_create_fromworkdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_create_fromchunks":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.18.0"],"changes":{}},"git_blob_is_binary":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_branch_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_branch_foreach":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_branch_lookup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_branch_upstream":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_branch_set_upstream":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_is_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_checkout_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true,"v0.21.2":true}},"git_checkout_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true,"v0.21.2":true}},"git_checkout_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true,"v0.21.2":true}},"git_clone":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_tree_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_parent_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_commit_nth_gen_ancestor":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_libgit2_capabilities":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_libgit2_opts":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_open_default":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_add_backend":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_config_open_level":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_config_refresh":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.18.0"],"changes":{}},"git_config_get_entry":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_config_delete_entry":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_foreach_match":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_parse_bool":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_parse_int32":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_parse_int64":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_userpass":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_tree_to_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_diff_index_to_workdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_diff_tree_to_workdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_diff_find_similar":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_diff_status_char":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_patch_free":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_delta":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_print":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_to_str":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"giterr_set_str":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"giterr_set_oom":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_ignore_add_rule":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_ignore_clear_internal_rules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_ignore_path_is_ignored":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_caps":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_set_caps":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_index_write_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_write_tree_to":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_get_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_remove_directory":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_add_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_remove_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_add":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_get":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_index_conflict_remove":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_cleanup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_has_conflicts":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_reuc_entrycount":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_get_bypath":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_add":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_clear":{"exists":["v0.18.0"],"changes":{}},"git_note_iterator_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_iterator_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_next":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_peel":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_dup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_add_disk_alternate":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_refresh":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_write_pack":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_odb_backend_pack":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_fromstrp":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_equal":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_set_threads":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_insert":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_insert_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_write":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true,"v0.20.0":true,"v0.21.2":true}},"git_packbuilder_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_object_count":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_written":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference__alloc":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_refdb_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_open":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_compress":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_set_backend":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_backend_fs":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_reflog_append":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_entry_id_old":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_entry_id_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_entry_message":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_name_to_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_symbolic_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_reference_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_reference_symbolic_target":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_symbolic_set_target":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_reference_foreach_glob":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_reference_has_log":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_reference_is_branch":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_reference_is_remote":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_reference_peel":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_is_valid_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_force":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_dst_matches":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_create_inmemory":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_remote_pushurl":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_set_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_set_pushurl":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_stop":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_check_cert":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.18.0"],"changes":{}},"git_remote_set_cred_acquire_cb":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_remote_set_transport":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.22.0":true}},"git_remote_set_callbacks":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.20.0":true}},"git_remote_stats":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_autotag":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_set_autotag":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_rename":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.22.0":true}},"git_remote_update_fetchhead":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_remote_set_update_fetchhead":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_remote_is_valid_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_wrap_odb":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_init_ext":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_refdb":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_refdb":{"exists":["v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_message_remove":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_merge_cleanup":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_repository_fetchhead_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_mergehead_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_hashfile":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_repository_set_head_detached":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_repository_detach_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_repository_state":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revparse_single":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revparse":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_push_range":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stash_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_strarray_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_strarray_copy":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_add_setup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_add_finalize":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_add_to_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_save":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_submodule_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_path":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_set_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_submodule_index_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_head_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_wd_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_ignore":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_set_ignore":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_submodule_update":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.22.0":true}},"git_submodule_set_update":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_submodule_fetch_recurse_submodules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_set_fetch_recurse_submodules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.23.0":true}},"git_submodule_init":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_sync":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_open":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_reload":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_submodule_reload_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.21.2":true}},"git_submodule_status":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_submodule_location":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_target_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_target_type":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_trace_set":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_userpass_plaintext_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_dummy":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_local":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_smart":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_smart_subtransport_http":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_smart_subtransport_git":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_tree_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_entry_byoid":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_tree_entry_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.19.0":true}},"git_tree_entry_dup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_tree_entry_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_entry_filemode":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_entry_cmp":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_entrycount":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_print_raw":{"exists":["v0.19.0"],"changes":{}},"git_diff_patch_from_blobs":{"exists":["v0.19.0"],"changes":{}},"git_index_add_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_remove_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_update_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_iterator_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_next":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_conflict_iterator_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_base_many":{"exists":["v0.19.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_merge_trees":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_odb_backend_loose":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.20.0":true}},"git_odb_backend_one_pack":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_strcmp":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_insert_commit":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_dwim":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_target_peel":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_iterator_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_iterator_glob_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_next":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_iterator_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_shorthand":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_refspec_string":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_direction":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_add_fetch":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_get_fetch_refspecs":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_add_push":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_get_push_refspecs":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_clear_refspecs":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.19.0"],"changes":{}},"git_repository_open_bare":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_namespace":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_get_namespace":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_is_shallow":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revparse_ext":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_list_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_list_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_create_from_oids":{"exists":["v0.20.0","v0.19.0"],"changes":{}},"git_reference__alloc_symbolic":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tag_annotation_create":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_smart_subtransport_ssh":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_blame_get_hunk_count":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blame_get_hunk_byindex":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blame_get_hunk_byline":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_blame_file":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blame_buffer":{"exists":["v0.20.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.24.2":true}},"git_blame_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_filtered_content":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_next":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_iterator_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_buf_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_clone_into":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.2":true}},"git_commit_message_raw":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_raw_header":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_get_multivar_foreach":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_multivar_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_next":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_iterator_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_delete_multivar":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_iterator_glob_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_backend_foreach_match":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_diff_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_tree_to_workdir_with_index":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_options_init":{"exists":["v0.20.0"],"changes":{}},"git_diff_is_sorted_icase":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_print":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"giterr_detach":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.20.0"],"changes":{}},"git_filter_list_load":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_filter_list_apply_to_data":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_apply_to_file":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_apply_to_blob":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_indexer_commit":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_head_from_ref":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.2":true}},"git_merge_head_from_fetchhead":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_merge_head_from_oid":{"exists":["v0.20.0"],"changes":{}},"git_merge_head_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_merge_result_is_uptodate":{"exists":["v0.20.0"],"changes":{}},"git_merge_result_is_fastforward":{"exists":["v0.20.0"],"changes":{}},"git_merge_result_fastforward_oid":{"exists":["v0.20.0"],"changes":{}},"git_object_lookup_bypath":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_stream_finalize_write":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_stream_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_dup":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_hash":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_set_callbacks":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_from_blobs":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_get_delta":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_patch_print":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_to_str":{"exists":["v0.20.0"],"changes":{}},"git_pathspec_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_matches_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_workdir":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_index":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_tree":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_diff":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_push_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_set_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_set_callbacks":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_add_refspec":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_update_tips":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.2":true}},"git_push_finish":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_unpack_ok":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.2":true}},"git_push_status_foreach":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_reflog_append_to":{"exists":["v0.20.0"],"changes":{}},"git_reference_is_tag":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_remote_create_with_fetchspec":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_owner":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_set_fetch_refspecs":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{}},"git_remote_set_push_refspecs":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{}},"git_remote_fetch":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true,"v0.22.0":true,"v0.23.0":true}},"git_repository_head_unborn":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_simplify_first_parent":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_signature_default":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_lookup":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.21.2":true}},"git_filter_list_push":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_length":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_repo":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_filemode":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_id":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_mode":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_register":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_unregister":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_has_username":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_ssh_key_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_default_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_register":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{"v0.22.0":true}},"git_transport_unregister":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.22.0":true}},"git_tree_entry_filemode_raw":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blame_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_checkout_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cherry_pick_init_options":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_cherry_pick_commit":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_cherry_pick":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_clone_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_clone_local_into":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_commit_summary":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_amend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_libgit2_features":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_find_xdg":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_snapshot":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_find_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_get_stats":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_stats_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_format_email":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_format_email_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_graph_descendant_of":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_file_init_input":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_file_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_head_from_id":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_merge_head_id":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_merge_file":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_file_from_index":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_file_result_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_commits":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_message_prettify":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_id":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object_short_id":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_to_buf":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_push_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_symbolic_create_matching":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_reference_create_matching":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_reference_remove":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_foreach_name":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_next_name":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_ensure_log":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_is_note":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refspec_rtransform":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_create_anonymous":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_dup":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_init_callbacks":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_get_callbacks":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.21.0"],"changes":{}},"git_remote_delete":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.22.0":true}},"git_remote_default_branch":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_discover":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_init_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_config_snapshot":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_message":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_state_cleanup":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revert_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revert_commit":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revert":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_revwalk_add_hide_cb":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_branch":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_create_from_ids":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_create_from_callback":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_print_callback__to_buf":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_print_callback__to_file_handle":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_get_perfdata":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_list_get_perfdata":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_options":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.21.0"],"changes":{}},"git_mempack_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_mempack_reset":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_refdb_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_ssh_interactive_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_ssh_key_from_agent":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_init":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_tree_entry_byid":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_annotated_commit_from_ref":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_annotated_commit_from_fetchhead":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_annotated_commit_lookup":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_annotated_commit_id":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_annotated_commit_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_attr_value":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_buf_is_binary":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_buf_contains_nul":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cherrypick_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cherrypick_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cherrypick":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_describe_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_describe_workdir":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_describe_format":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_describe_result_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_libgit2_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_libgit2_shutdown":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_bases":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_author":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_note_committer":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_tostr_s":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oidarray_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_rebase_open":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_rebase_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_abort":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_rebase_finish":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_rebase_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_lookup":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_upload":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_prune":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_push":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_remote_prune_refs":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reset_default":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_update_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_resolve_url":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_update_strategy":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_repo_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_hashsig_create":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_hashsig_create_fromfile":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_hashsig_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_hashsig_compare":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_openssl_set_locking":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_ssh_with_paths":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_username_new":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_treebuilder_new":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_new":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository__cleanup":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_reinit_filesystem":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_bare":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reset":{"exists":["v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{"v0.23.0":true}},"git_annotated_commit_from_revspec":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_branch_create_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_header_field":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_entry_free":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_get_path":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_get_string_buf":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_parse_path":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_contains":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_stream_data":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_stream_file":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_list_stream_blob":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_checksum":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_entry_is_conflict":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_open_wstream":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_insert_walk":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_packbuilder_insert_recur":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_next":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_fetch_init_options":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_head_detached_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_ident":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_repository_set_ident":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reset_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stash_apply_init_options":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_submodule_set_branch":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_filter_source_flags":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_ssh_key_memory_new":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_body":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_commit_extract_signature":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_find_programdata":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_lock":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_index_to_index":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_inmemory_index":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stream_register_tls":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_transport_smart_certificate_check":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_free":{"exists":["v0.24.0","v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_attr_get_many":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_create_frombuffer":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_buf_grow":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_buf_set":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_get_mapped":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_config_lookup_map_value":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_num_deltas":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_num_deltas_of_type":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_get_delta":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_blob_to_buffer":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_buffers":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_stats_files_changed":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_stats_insertions":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_stats_deletions":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_stats_to_buf":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_diff_commit_as_email":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_graph_ahead_behind":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_get_byindex":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_add_frombuffer":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_index_find_prefix":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_indexer_append":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_analysis":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_bases_many":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge_base_octopus":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_merge":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_object__size":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_exists_prefix":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_stream_write":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_stream_read":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_hash":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_object_size":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_num_backends":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_odb_get_backend":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_fromstrn":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_nfmt":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_tostr":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_oid_shorten_new":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_from_diff":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_from_blob_and_buffer":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_from_buffers":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_num_hunks":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_line_stats":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_get_hunk":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_num_lines_in_hunk":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_get_line_in_hunk":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_patch_size":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_entrycount":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_entry":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_diff_entry":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_failed_entrycount":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_pathspec_match_list_failed_entry":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_operation_entrycount":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_operation_current":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_rebase_operation_byindex":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reflog_drop":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_reference_normalize_name":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_refspec_count":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_remote_get_refspec":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stash_apply":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stash_drop":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_stash_pop":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_list_entrycount":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_status_byindex":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_cred_ssh_custom_new":{"exists":["v0.24.1","v0.24.2","HEAD"],"changes":{}},"git_blob_create_fromstream":{"exists":["HEAD"],"changes":{}},"git_blob_create_fromstream_commit":{"exists":["HEAD"],"changes":{}},"git_blob_dup":{"exists":["HEAD"],"changes":{}},"git_commit_create_buffer":{"exists":["HEAD"],"changes":{}},"git_commit_create_with_signature":{"exists":["HEAD"],"changes":{}},"git_commit_dup":{"exists":["HEAD"],"changes":{}},"git_diff_to_buf":{"exists":["HEAD"],"changes":{}},"git_diff_from_buffer":{"exists":["HEAD"],"changes":{}},"git_index_version":{"exists":["HEAD"],"changes":{}},"git_index_set_version":{"exists":["HEAD"],"changes":{}},"git_odb_expand_ids":{"exists":["HEAD"],"changes":{}},"git_proxy_init_options":{"exists":["HEAD"],"changes":{}},"git_reference_dup":{"exists":["HEAD"],"changes":{}},"git_signature_from_buffer":{"exists":["HEAD"],"changes":{}},"git_time_monotonic":{"exists":["HEAD"],"changes":{}},"git_tag_dup":{"exists":["HEAD"],"changes":{}},"git_tree_dup":{"exists":["HEAD"],"changes":{}},"git_tree_create_updated":{"exists":["HEAD"],"changes":{}}}}
\ No newline at end of file
+{"versions":["HEAD","v0.25.1","v0.25.0","v0.24.6","v0.24.5","v0.24.4","v0.24.3","v0.24.2","v0.24.1","v0.24.0","v0.23.4","v0.23.3","v0.23.2","v0.23.1","v0.23.0","v0.22.3","v0.22.2","v0.22.1","v0.22.0","v0.21.5","v0.21.4","v0.21.3","v0.21.2","v0.21.1","v0.21.0","v0.20.0","v0.19.0","v0.18.0","v0.17.0","v0.16.0","v0.15.0","v0.14.0","v0.13.0","v0.12.0","v0.11.0","v0.10.0","v0.8.0","v0.3.0","v0.2.0","v0.1.0"],"github":"libgit2/libgit2","name":"libgit2","signatures":{"git_blob_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_blob_set_rawcontent_fromfile":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_blob_rawcontent":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_blob_rawsize":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_blob_writefile":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_message_short":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.1.0"],"changes":{}},"git_commit_message":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_time":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_committer":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_author":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_tree":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true,"v0.18.0":true}},"git_commit_parentcount":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_parent":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true,"v0.19.0":true}},"git_commit_add_parent":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_set_message":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_commit_set_committer":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_commit_set_author":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_commit_set_tree":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_index_open_bare":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_index_open_inrepo":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_index_clear":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_read":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_index_write":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_find":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_index_add":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_index_remove":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_index_insert":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.1.0"],"changes":{}},"git_index_get":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{"v0.13.0":true}},"git_index_entrycount":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_object_write":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_object_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.11.0":true}},"git_object_type":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.11.0":true}},"git_object_owner":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.11.0":true}},"git_object_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_type2string":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_string2type":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_typeisloose":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_open":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_add_backend":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true,"v0.3.0":true,"v0.11.0":true}},"git_odb_close":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.1.0"],"changes":{}},"git_odb_read":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true,"v0.10.0":true,"v0.12.0":true}},"git_odb_read_header":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_odb_write":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_odb_exists":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rawobj_hash":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.2.0"],"changes":{}},"git_rawobj_close":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.2.0"],"changes":{}},"git_repository_open":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_open2":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.2.0"],"changes":{}},"git_repository_lookup":{"exists":["v0.2.0","v0.3.0","v0.1.0"],"changes":{}},"git_repository_database":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.1.0"],"changes":{}},"git_repository_index":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true}},"git_repository_newobject":{"exists":["v0.2.0","v0.3.0","v0.1.0"],"changes":{}},"git_repository_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_new":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_reset":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_push":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true}},"git_revwalk_hide":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true}},"git_revwalk_next":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.8.0":true,"v0.11.0":true}},"git_revwalk_sorting":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_free":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_repository":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tag_target":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true,"v0.18.0":true}},"git_tag_type":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{}},"git_tag_name":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tag_tagger":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tag_message":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tag_set_target":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_set_name":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tag_set_tagger":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_tag_set_message":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_lookup":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_new":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tree_entry_byname":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_tree_entry_byindex":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.13.0":true,"v0.24.2":true}},"git_tree_entry_attributes":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.1.0"],"changes":{"v0.12.0":true}},"git_tree_entry_name":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.12.0":true}},"git_tree_entry_id":{"exists":["v0.1.0","v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.12.0":true}},"git_tree_entry_2object":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.1.0"],"changes":{"v0.11.0":true,"v0.10.0":true,"v0.12.0":true}},"git_tree_add_entry":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.8.0":true}},"git_tree_remove_entry_byindex":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_remove_entry_byname":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_id":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_name":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{}},"git_tree_entry_set_attributes":{"exists":["v0.2.0","v0.3.0","v0.8.0","v0.10.0","v0.1.0"],"changes":{"v0.10.0":true}},"git_strerror":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.1.0"],"changes":{}},"git_odb__read_packed":{"exists":["v0.1.0"],"changes":{}},"git_odb__read_loose":{"exists":["v0.1.0"],"changes":{}},"git_obj_close":{"exists":["v0.1.0"],"changes":{}},"git_obj_type_to_string":{"exists":["v0.1.0"],"changes":{}},"git_obj_string_to_type":{"exists":["v0.1.0"],"changes":{}},"git_obj__loose_object_type":{"exists":["v0.1.0"],"changes":{}},"git_obj_hash":{"exists":["v0.1.0"],"changes":{}},"git_oid_mkstr":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_oid_mkraw":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.1.0"],"changes":{}},"git_oid_fmt":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_pathfmt":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_allocfmt":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.1.0"],"changes":{}},"git_oid_cpy":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_cmp":{"exists":["v0.1.0","v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_time_offset":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_object_lookup":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_new":{"exists":["v0.10.0","v0.8.0"],"changes":{}},"git_object_close":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.8.0"],"changes":{}},"git_odb_add_alternate":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_lookup":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_create_symbolic":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{"v0.14.0":true}},"git_reference_create_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{"v0.14.0":true}},"git_reference_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_reference_target":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reference_type":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reference_name":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reference_resolve":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reference_owner":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reference_set_target":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.21.4":true,"v0.23.2":true}},"git_reference_set_oid":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_reference_rename":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true,"v0.18.0":true,"v0.21.4":true,"v0.23.2":true}},"git_reference_delete":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_packall":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.8.0"],"changes":{}},"git_repository_open3":{"exists":["v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.3.0"],"changes":{}},"git_repository_init":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_signature_new":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.11.0":true,"v0.10.0":true,"v0.12.0":true,"v0.15.0":true}},"git_signature_dup":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_signature_free":{"exists":["v0.3.0","v0.8.0","v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_clear_entries":{"exists":["v0.8.0","v0.10.0","v0.3.0"],"changes":{}},"git_reference_new":{"exists":["v0.3.0"],"changes":{}},"git_reference_write":{"exists":["v0.3.0"],"changes":{}},"git_reference_set_name":{"exists":["v0.3.0"],"changes":{}},"git_repository_lookup_ref":{"exists":["v0.3.0"],"changes":{}},"git_tree_add_entry_unsorted":{"exists":["v0.3.0"],"changes":{}},"git_tree_sort_entries":{"exists":["v0.3.0"],"changes":{}},"git_blob_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_blob_create_fromfile":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.11.0"],"changes":{}},"git_commit_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_commit_create":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true,"v0.15.0":true,"v0.24.2":true}},"git_commit_create_o":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_commit_create_ov":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_commit_create_v":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true,"v0.15.0":true,"v0.24.2":true}},"git_odb_open_rstream":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_odb_object_id":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_data":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_type":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_shorten_add":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_shorten_free":{"exists":["v0.10.0","v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_listall":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.10.0"],"changes":{}},"git_reference_listcb":{"exists":["v0.12.0","v0.11.0"],"changes":{}},"git_tag_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_tag_target_oid":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.10.0"],"changes":{}},"git_tag_create":{"exists":["v0.11.0","v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true}},"git_tag_create_o":{"exists":["v0.12.0","v0.13.0","v0.11.0"],"changes":{}},"git_tree_close":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.11.0"],"changes":{}},"git_repository_close":{"exists":["v0.10.0"],"changes":{}},"git_commit_tree_oid":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_commit_parent_oid":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_add2":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_append":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_index_append2":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_reference_create_symbolic_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_reference_create_oid_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_reference_rename_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_repository_is_empty":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_path":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.13.0":true,"v0.16.0":true}},"git_repository_workdir":{"exists":["v0.12.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_signature_now":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.15.0":true}},"git_tag_create_frombuffer":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true}},"git_tag_create_f":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_tag_create_fo":{"exists":["v0.13.0","v0.12.0"],"changes":{}},"git_tag_delete":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_list":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_create_fromindex":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.12.0"],"changes":{}},"git_treebuilder_create":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.12.0"],"changes":{}},"git_treebuilder_clear":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_free":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_get":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_insert":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_treebuilder_remove":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_filter":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_treebuilder_write":{"exists":["v0.12.0","v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.22.1":true}},"git_blob_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_commit_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_libgit2_version":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_find_global":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_config_open_global":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_config_file__ondisk":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_config_new":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_add_file":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_config_add_file_ondisk":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true}},"git_config_open_ondisk":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_free":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_get_int":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_get_long":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_get_bool":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_get_string":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_set_int":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_set_long":{"exists":["v0.14.0","v0.13.0"],"changes":{}},"git_config_set_bool":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_set_string":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_foreach":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.14.0":true,"v0.18.0":true}},"git_lasterror":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.13.0"],"changes":{}},"git_index_open":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_entrycount_unmerged":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_get_unmerged_bypath":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_get_unmerged_byindex":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.13.0"],"changes":{}},"git_index_entry_stage":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_odb_read_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_oid_fromstr":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_fromraw":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_ncmp":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_reference_foreach":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true}},"git_repository_is_bare":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_config":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true}},"git_tag_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_tree_lookup_prefix":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_tree_entrycount":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_tree_entry_type":{"exists":["v0.13.0","v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_delete":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_clearerror":{"exists":["v0.15.0","v0.16.0","v0.14.0"],"changes":{}},"git_index_uniq":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_odb_hashfile":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_read":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true}},"git_reflog_write":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_reflog_entrycount":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_entry_byindex":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_reflog_entry_oidold":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_entry_oidnew":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_entry_committer":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_entry_msg":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.14.0"],"changes":{}},"git_reflog_free":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_src":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_dst":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_src_match":{"exists":["v0.15.0","v0.16.0","v0.14.0"],"changes":{}},"git_refspec_transform":{"exists":["v0.14.0","v0.15.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_get":{"exists":["v0.15.0","v0.14.0"],"changes":{}},"git_remote_name":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_url":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_fetchspec":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.14.0"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_pushspec":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.14.0"],"changes":{"v0.16.0":true,"v0.18.0":true}},"git_remote_connect":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true,"v0.18.0":true,"v0.23.2":true,"v0.24.0":true,"v0.23.4":true,"v0.24.2":true,"v0.25.1":true}},"git_remote_free":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true}},"git_repository_head_detached":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_head_orphan":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.14.0"],"changes":{}},"git_status_foreach":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_status_file":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_create_lightweight":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_list_match":{"exists":["v0.14.0","v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_new":{"exists":["v0.14.0","v0.15.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_commit_message_encoding":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_config_find_system":{"exists":["v0.15.0","v0.16.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_config_get_int32":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_get_int64":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_config_set_int32":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_set_int64":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_indexer_new":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true,"v0.21.4":true}},"git_indexer_run":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{}},"git_indexer_write":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{}},"git_indexer_hash":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_indexer_free":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_new":{"exists":["v0.16.0","v0.17.0","v0.15.0"],"changes":{"v0.16.0":true,"v0.17.0":true}},"git_remote_negotiate":{"exists":["v0.15.0"],"changes":{}},"git_remote_download":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true,"v0.20.0":true,"v0.22.1":true,"v0.23.2":true}},"git_remote_update_tips":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.16.0":true,"v0.17.0":true,"v0.18.0":true,"v0.21.4":true,"v0.23.2":true}},"git_repository_head":{"exists":["v0.15.0","v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_config_autoload":{"exists":["v0.15.0"],"changes":{}},"git_attr_get":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true}},"git_attr_foreach":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true,"v0.18.0":true}},"git_attr_cache_flush":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_attr_add_macro":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_read_tree":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_odb_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_streq":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_rename":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_reflog_delete":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_reference_is_packed":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_reference_reload":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_reference_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_load":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_remote_ls":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_remote_connected":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_disconnect":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_valid_url":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_repository_set_workdir":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_repository_set_config":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_odb":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_odb":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_index":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_should_ignore":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.17.0":true}},"git_tag_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_threads_init":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_threads_shutdown":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.16.0"],"changes":{}},"git_tree_free":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_get_subtree":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_tree_walk":{"exists":["v0.16.0","v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tree_diff":{"exists":["v0.16.0"],"changes":{}},"gitwin_set_codepage":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"gitwin_get_codepage":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"gitwin_set_utf8":{"exists":["v0.17.0","v0.16.0"],"changes":{}},"git_blob_create_fromdisk":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_delete":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_branch_list":{"exists":["v0.17.0"],"changes":{}},"git_branch_move":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.21.4":true,"v0.23.2":true}},"git_config_get_multivar":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_config_set_multivar":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_list_free":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{}},"git_diff_tree_to_tree":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true}},"git_diff_index_to_tree":{"exists":["v0.17.0"],"changes":{}},"git_diff_workdir_to_index":{"exists":["v0.17.0"],"changes":{}},"git_diff_workdir_to_tree":{"exists":["v0.17.0"],"changes":{}},"git_diff_merge":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_diff_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.20.0":true,"v0.23.2":true}},"git_diff_print_compact":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_diff_print_patch":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_diff_blobs":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.19.0":true,"v0.20.0":true,"v0.23.2":true}},"giterr_last":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"giterr_clear":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_indexer_stream_new":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_finalize":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_hash":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_indexer_stream_free":{"exists":["v0.18.0","v0.19.0","v0.17.0"],"changes":{}},"git_merge_base":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_note_read":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_message":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_note_oid":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.17.0"],"changes":{"v0.18.0":true}},"git_note_create":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.22.1":true}},"git_note_remove":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_note_free":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_default_ref":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.17.0"],"changes":{}},"git_note_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_oid_iszero":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_name_to_oid":{"exists":["v0.17.0"],"changes":{}},"git_reference_list":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_reference_cmp":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_refspec_src_matches":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_save":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.17.0"],"changes":{}},"git_remote_set_fetchspec":{"exists":["v0.18.0","v0.17.0"],"changes":{}},"git_remote_set_pushspec":{"exists":["v0.18.0","v0.17.0"],"changes":{}},"git_remote_supported_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.17.0"],"changes":{}},"git_remote_list":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_add":{"exists":["v0.17.0"],"changes":{}},"git_repository_open_ext":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_revwalk_push_glob":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_push_head":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_hide_glob":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_hide_head":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_push_ref":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_hide_ref":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_foreach_ext":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_submodule_foreach":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true,"v0.24.0":true,"v0.23.4":true,"v0.24.2":true}},"git_submodule_lookup":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_peel":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.18.0":true}},"git_tree_entry_to_object":{"exists":["v0.17.0","v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_create_fromworkdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_create_fromchunks":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.5","v0.24.6","v0.18.0"],"changes":{}},"git_blob_is_binary":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_branch_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_branch_foreach":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_branch_lookup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_branch_upstream":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_branch_set_upstream":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_is_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_checkout_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true,"v0.21.4":true}},"git_checkout_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true,"v0.21.4":true}},"git_checkout_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true,"v0.21.4":true}},"git_clone":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_tree_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_parent_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_commit_nth_gen_ancestor":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_libgit2_capabilities":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_libgit2_opts":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_open_default":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_add_backend":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_config_open_level":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_config_refresh":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.18.0"],"changes":{}},"git_config_get_entry":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_config_delete_entry":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_foreach_match":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_parse_bool":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_parse_int32":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_parse_int64":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_userpass":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_tree_to_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_diff_index_to_workdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_diff_tree_to_workdir":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_diff_find_similar":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_diff_status_char":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_patch_free":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_delta":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_print":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_diff_patch_to_str":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"giterr_set_str":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"giterr_set_oom":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_ignore_add_rule":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_ignore_clear_internal_rules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_ignore_path_is_ignored":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_caps":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_set_caps":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_index_write_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_write_tree_to":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_get_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_remove_directory":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_add_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_remove_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_add":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_get":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_index_conflict_remove":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_cleanup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_has_conflicts":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_reuc_entrycount":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_get_bypath":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_add":{"exists":["v0.18.0"],"changes":{}},"git_index_reuc_clear":{"exists":["v0.18.0"],"changes":{}},"git_note_iterator_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_iterator_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_next":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_peel":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_dup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_add_disk_alternate":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_refresh":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_write_pack":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_odb_backend_pack":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_fromstrp":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_equal":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_set_threads":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_insert":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_insert_tree":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_write":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true,"v0.20.0":true,"v0.21.4":true}},"git_packbuilder_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_object_count":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_written":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference__alloc":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_refdb_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_open":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_compress":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_set_backend":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_backend_fs":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_reflog_append":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_entry_id_old":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_entry_id_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_entry_message":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_name_to_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_symbolic_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_reference_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_reference_symbolic_target":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_symbolic_set_target":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_reference_foreach_glob":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_reference_has_log":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_reference_is_branch":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_reference_is_remote":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_reference_peel":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_is_valid_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_force":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_dst_matches":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_create":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_create_inmemory":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_remote_pushurl":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_set_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_set_pushurl":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_stop":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_check_cert":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.18.0"],"changes":{}},"git_remote_set_cred_acquire_cb":{"exists":["v0.19.0","v0.18.0"],"changes":{}},"git_remote_set_transport":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.22.1":true}},"git_remote_set_callbacks":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.20.0":true}},"git_remote_stats":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_autotag":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_set_autotag":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_rename":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.22.1":true}},"git_remote_update_fetchhead":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_remote_set_update_fetchhead":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_remote_is_valid_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_wrap_odb":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_init_ext":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_refdb":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_refdb":{"exists":["v0.18.0","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_message_remove":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_merge_cleanup":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_repository_fetchhead_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_mergehead_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_hashfile":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_repository_set_head_detached":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_repository_detach_head":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_repository_state":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revparse_single":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revparse":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_push_range":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stash_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_strarray_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_strarray_copy":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_add_setup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_add_finalize":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_add_to_index":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_save":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{}},"git_submodule_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_name":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_path":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_set_url":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_submodule_index_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_head_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_wd_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_ignore":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_set_ignore":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_submodule_update":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.22.1":true}},"git_submodule_set_update":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_submodule_fetch_recurse_submodules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_set_fetch_recurse_submodules":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.23.2":true}},"git_submodule_init":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_sync":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_open":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_reload":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_submodule_reload_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.18.0"],"changes":{"v0.21.4":true}},"git_submodule_status":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_submodule_location":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_target_id":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_target_type":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_foreach":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_trace_set":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_userpass_plaintext_new":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_dummy":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_local":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_smart":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_smart_subtransport_http":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_smart_subtransport_git":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_tree_owner":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_entry_byoid":{"exists":["v0.19.0","v0.20.0","v0.18.0"],"changes":{}},"git_tree_entry_bypath":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.19.0":true}},"git_tree_entry_dup":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_tree_entry_free":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_entry_filemode":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_entry_cmp":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_entrycount":{"exists":["v0.18.0","v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_print_raw":{"exists":["v0.19.0"],"changes":{}},"git_diff_patch_from_blobs":{"exists":["v0.19.0"],"changes":{}},"git_index_add_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_remove_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_update_all":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_iterator_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_next":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_conflict_iterator_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_base_many":{"exists":["v0.19.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_merge_trees":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_odb_backend_loose":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.20.0":true}},"git_odb_backend_one_pack":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_strcmp":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_insert_commit":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_dwim":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_target_peel":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_iterator_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_iterator_glob_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_next":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_iterator_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_shorthand":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_refspec_string":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_direction":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_add_fetch":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_get_fetch_refspecs":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_add_push":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_get_push_refspecs":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_clear_refspecs":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.19.0"],"changes":{}},"git_repository_open_bare":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_namespace":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_get_namespace":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_is_shallow":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revparse_ext":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_list_new":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_list_free":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_create_from_oids":{"exists":["v0.20.0","v0.19.0"],"changes":{}},"git_reference__alloc_symbolic":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_owner":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_annotation_create":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_smart_subtransport_ssh":{"exists":["v0.19.0","v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_blame_get_hunk_count":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blame_get_hunk_byindex":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blame_get_hunk_byline":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_blame_file":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blame_buffer":{"exists":["v0.20.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.24.2":true}},"git_blame_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_filtered_content":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_next":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_iterator_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_buf_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_clone_into":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.4":true}},"git_commit_message_raw":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_raw_header":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_get_multivar_foreach":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_multivar_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_next":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_iterator_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_delete_multivar":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_iterator_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_iterator_glob_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_backend_foreach_match":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_diff_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_tree_to_workdir_with_index":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_options_init":{"exists":["v0.20.0"],"changes":{}},"git_diff_is_sorted_icase":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_print":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"giterr_detach":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.20.0"],"changes":{}},"git_filter_list_load":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_filter_list_apply_to_data":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_apply_to_file":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_apply_to_blob":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_indexer_commit":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_head_from_ref":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.4":true}},"git_merge_head_from_fetchhead":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_merge_head_from_oid":{"exists":["v0.20.0"],"changes":{}},"git_merge_head_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_merge_result_is_uptodate":{"exists":["v0.20.0"],"changes":{}},"git_merge_result_is_fastforward":{"exists":["v0.20.0"],"changes":{}},"git_merge_result_fastforward_oid":{"exists":["v0.20.0"],"changes":{}},"git_object_lookup_bypath":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_stream_finalize_write":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_stream_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_dup":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_hash":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_set_callbacks":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_from_blobs":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_get_delta":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_patch_print":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_to_str":{"exists":["v0.20.0"],"changes":{}},"git_pathspec_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_matches_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_workdir":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_index":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_tree":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_diff":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_free":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_push_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_set_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_set_callbacks":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_add_refspec":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_update_tips":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.4":true}},"git_push_finish":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_unpack_ok":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{"v0.21.4":true}},"git_push_status_foreach":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_push_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.20.0"],"changes":{}},"git_reflog_append_to":{"exists":["v0.20.0"],"changes":{}},"git_reference_is_tag":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_remote_create_with_fetchspec":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_owner":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_set_fetch_refspecs":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{}},"git_remote_set_push_refspecs":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{}},"git_remote_fetch":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true,"v0.22.1":true,"v0.23.2":true}},"git_repository_head_unborn":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_simplify_first_parent":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_signature_default":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_lookup":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.21.4":true}},"git_filter_list_push":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_length":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_repo":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_path":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_filemode":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_id":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_mode":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_register":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_unregister":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_has_username":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_ssh_key_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_default_new":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_register":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.20.0"],"changes":{"v0.22.1":true}},"git_transport_unregister":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.22.1":true}},"git_tree_entry_filemode_raw":{"exists":["v0.20.0","v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blame_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_checkout_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cherry_pick_init_options":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_cherry_pick_commit":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_cherry_pick":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_clone_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_clone_local_into":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_commit_summary":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_amend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_libgit2_features":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_find_xdg":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_snapshot":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_find_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_get_stats":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_stats_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_format_email":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_format_email_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_graph_descendant_of":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_file_init_input":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_file_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_head_from_id":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_merge_head_id":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.21.0"],"changes":{}},"git_merge_file":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_file_from_index":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_file_result_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_commits":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_message_prettify":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_id":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object_short_id":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_to_buf":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_push_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_symbolic_create_matching":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_reference_create_matching":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_reference_remove":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_foreach_name":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_next_name":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_ensure_log":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_is_note":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refspec_rtransform":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_create_anonymous":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_dup":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_init_callbacks":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_get_callbacks":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.21.0"],"changes":{}},"git_remote_delete":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.22.1":true}},"git_remote_default_branch":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_discover":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_init_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_config_snapshot":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_message":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_state_cleanup":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revert_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revert_commit":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revert":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_revwalk_add_hide_cb":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_init_options":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_free":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_branch":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_create_from_ids":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_create_from_callback":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_print_callback__to_buf":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_print_callback__to_file_handle":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_get_perfdata":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_list_get_perfdata":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_options":{"exists":["v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.21.0"],"changes":{}},"git_mempack_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_mempack_reset":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_refdb_init_backend":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_ssh_interactive_new":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_ssh_key_from_agent":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_init":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_entry_byid":{"exists":["v0.21.0","v0.21.1","v0.21.2","v0.21.3","v0.21.4","v0.21.5","v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_from_ref":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_from_fetchhead":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_lookup":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_id":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_attr_value":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_buf_is_binary":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_buf_contains_nul":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cherrypick_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cherrypick_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cherrypick":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_describe_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_describe_workdir":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_describe_format":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_describe_result_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_libgit2_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_libgit2_shutdown":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_bases":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_author":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_note_committer":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_tostr_s":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oidarray_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_rebase_open":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_rebase_commit":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_abort":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_rebase_finish":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_rebase_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_lookup":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_upload":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_prune":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_push":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_remote_prune_refs":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reset_default":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_update_init_options":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_resolve_url":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_update_strategy":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_repo_init":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_hashsig_create":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_hashsig_create_fromfile":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_hashsig_free":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_hashsig_compare":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_openssl_set_locking":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_ssh_with_paths":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_username_new":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_treebuilder_new":{"exists":["v0.22.0","v0.22.1","v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reset":{"exists":["v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{"v0.23.2":true}},"git_repository_new":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository__cleanup":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_reinit_filesystem":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_bare":{"exists":["v0.22.2","v0.22.3","v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_annotated_commit_from_revspec":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_branch_create_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_header_field":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_entry_free":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_get_path":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_get_string_buf":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_parse_path":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_contains":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_stream_data":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_stream_file":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_list_stream_blob":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_checksum":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_entry_is_conflict":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_open_wstream":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_insert_walk":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_packbuilder_insert_recur":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_next":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_fetch_init_options":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_head_detached_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_ident":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_set_ident":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reset_from_annotated":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stash_apply_init_options":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_submodule_set_branch":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_filter_source_flags":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_ssh_key_memory_new":{"exists":["v0.23.0","v0.23.1","v0.23.2","v0.23.3","v0.23.4","v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_body":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_extract_signature":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_find_programdata":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_lock":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_index_to_index":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_inmemory_index":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stream_register_tls":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_transport_smart_certificate_check":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_free":{"exists":["v0.24.0","v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_attr_get_many":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_create_frombuffer":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_buf_grow":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_buf_set":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_get_mapped":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_config_lookup_map_value":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_num_deltas":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_num_deltas_of_type":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_get_delta":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_blob_to_buffer":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_buffers":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_stats_files_changed":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_stats_insertions":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_stats_deletions":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_stats_to_buf":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_commit_as_email":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_graph_ahead_behind":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_get_byindex":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_add_frombuffer":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_find_prefix":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_indexer_append":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_analysis":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_bases_many":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge_base_octopus":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_merge":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_object__size":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_exists_prefix":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_stream_write":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_stream_read":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_hash":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_object_size":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_num_backends":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_get_backend":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_fromstrn":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_nfmt":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_tostr":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_oid_shorten_new":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_from_diff":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_from_blob_and_buffer":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_from_buffers":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_num_hunks":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_line_stats":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_get_hunk":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_num_lines_in_hunk":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_get_line_in_hunk":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_patch_size":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_entrycount":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_entry":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_diff_entry":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_failed_entrycount":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_pathspec_match_list_failed_entry":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_operation_entrycount":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_operation_current":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_rebase_operation_byindex":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reflog_drop":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_normalize_name":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_refspec_count":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_remote_get_refspec":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stash_apply":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stash_drop":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_stash_pop":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_list_entrycount":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_status_byindex":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_cred_ssh_custom_new":{"exists":["v0.24.1","v0.24.2","v0.24.3","v0.24.4","v0.24.5","v0.24.6","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_create_fromstream":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_create_fromstream_commit":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_blob_dup":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_create_buffer":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_create_with_signature":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_commit_dup":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_to_buf":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_diff_from_buffer":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_version":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_index_set_version":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_odb_expand_ids":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_proxy_init_options":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_reference_dup":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_signature_from_buffer":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_time_monotonic":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tag_dup":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_dup":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_tree_create_updated":{"exists":["v0.24.4","v0.25.0","v0.25.1","HEAD"],"changes":{}},"git_repository_submodule_cache_all":{"exists":["HEAD"],"changes":{}},"git_repository_submodule_cache_clear":{"exists":["HEAD"],"changes":{}},"git_treebuilder_write_with_buffer":{"exists":["HEAD"],"changes":{}}}}
\ No newline at end of file
diff --git a/v0.21.1.json b/v0.21.1.json
index 30028c3..baa32bc 100644
--- a/v0.21.1.json
+++ b/v0.21.1.json
@@ -1 +1 @@
-{"files":[{"file":"attr.h","functions":["git_attr_get","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":237},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_free"],"meta":{},"lines":208},{"file":"blob.h","functions":["git_blob_lookup","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_is_binary"],"meta":{},"lines":219},{"file":"branch.h","functions":["git_branch_create","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":242},{"file":"buffer.h","functions":["git_buf_free"],"meta":{},"lines":72},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":323},{"file":"cherrypick.h","functions":["git_cherry_pick_init_options","git_cherry_pick_commit","git_cherry_pick"],"meta":{},"lines":81},{"file":"clone.h","functions":["git_clone_init_options","git_clone","git_clone_into","git_clone_local_into"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_amend"],"meta":{},"lines":353},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":228},{"file":"config.h","functions":["git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_refresh","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_string","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_backend_foreach_match"],"meta":{},"lines":640},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_init_options","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_merge","git_diff_find_similar","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_get_stats","git_diff_stats_free","git_diff_format_email","git_diff_format_email_init_options"],"meta":{},"lines":1234},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_detach","giterr_set_str","giterr_set_oom"],"meta":{},"lines":149},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_free"],"meta":{},"lines":142},{"file":"graph.h","functions":["git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_clear","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_add_bypath","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":693},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_base","git_merge_head_from_ref","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_id","git_merge_head_free","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits"],"meta":{},"lines":512},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":54},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_default_ref","git_note_foreach"],"meta":{},"lines":198},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object_peel","git_object_dup"],"meta":{},"lines":230},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_exists","git_odb_refresh","git_odb_foreach","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate"],"meta":{},"lines":473},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromraw","git_oid_fmt","git_oid_pathfmt","git_oid_allocfmt","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":261},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":211},{"file":"patch.h","functions":["git_patch_from_blobs","git_patch_free","git_patch_get_delta","git_patch_print","git_patch_to_buf"],"meta":{},"lines":271},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free"],"meta":{},"lines":201},{"file":"push.h","functions":["git_push_init_options","git_push_transfer_progress","git_push_new","git_push_set_options","git_push_set_callbacks","git_push_add_refspec","git_push_update_tips","git_push_finish","git_push_unpack_ok","git_push_status_foreach","git_push_free"],"meta":{},"lines":177},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":734},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_load","git_remote_save","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_set_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_set_push_refspecs","git_remote_clear_refspecs","git_remote_connect","git_remote_download","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_update_tips","git_remote_fetch","git_remote_valid_url","git_remote_supported_url","git_remote_list","git_remote_check_cert","git_remote_set_transport","git_remote_init_callbacks","git_remote_set_callbacks","git_remote_get_callbacks","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_rename","git_remote_update_fetchhead","git_remote_set_update_fetchhead","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":639},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow"],"meta":{},"lines":712},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":81},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":286},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_cb","git_stash_foreach"],"meta":{},"lines":98},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":361},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_save","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_reload_all","git_submodule_status","git_submodule_location"],"meta":{},"lines":555},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":108},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":87},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":297},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":102},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":200},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":36},{"file":"tag.h","functions":["git_tag_lookup","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"threads.h","functions":["git_threads_init","git_threads_shutdown"],"meta":{},"lines":45},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_default_new","git_cred_acquire_cb","git_transport_init","git_transport_new","git_transport_register","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":537},{"file":"tree.h","functions":["git_tree_lookup","git_tree_free","git_tree_id","git_tree_owner","git_tree_entry_byname","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_create","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":408},{"file":"types.h","functions":["git_transfer_progress_cb"],"meta":{},"lines":344}],"functions":{"git_attr_get":{"type":"function","file":"attr.h","line":142,"lineto":147,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":206,"lineto":211,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":221,"lineto":222,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":234,"lineto":237,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":93,"lineto":95,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":138,"lineto":138,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":147,"lineto":149,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":158,"lineto":160,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"uint32_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, uint32_t lineno","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":173,"lineto":177,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_file-2"]}},"git_blame_free":{"type":"function","file":"blame.h","line":208,"lineto":208,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.21.1/general.html#git_blob_lookup-1"]}},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.21.1/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.21.1/general.html#git_blob_rawsize-3","ex/v0.21.1/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":124,"lineto":128,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer.  To keep the data detached from the blob, call <code>git_buf_grow</code> on the buffer with a <code>want_size</code> of 0 and the buffer will be reallocated to be detached from the blob.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":141,"lineto":141,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":153,"lineto":153,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":189,"lineto":194,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return    0. This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":56,"lineto":63,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog.\n If NULL, the default is \"Branch: created\"; if you want something more\n useful, provide a message."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_commit *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":75,"lineto":75,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":91,"lineto":94,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":104,"lineto":104,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":111,"lineto":111,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":132,"lineto":138,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":161,"lineto":165,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":182,"lineto":184,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":198,"lineto":200,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":212,"lineto":212,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":241,"lineto":242,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.21.1/diff.html#git_buf_free-1"],"tag.c":["ex/v0.21.1/tag.html#git_buf_free-1"]}},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":277,"lineto":279,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":291,"lineto":293,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":304,"lineto":307,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":320,"lineto":323,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherry_pick_init_options":{"type":"function","file":"cherrypick.h","line":44,"lineto":46,"args":[{"name":"opts","type":"git_cherry_pick_options *","comment":"the `git_cherry_pick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRY_PICK_OPTIONS_VERSION`"}],"argline":"git_cherry_pick_options *opts, unsigned int version","sig":"git_cherry_pick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherry_pick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRY_PICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherry"},"git_cherry_pick_commit":{"type":"function","file":"cherrypick.h","line":62,"lineto":68,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherry_pick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherry_pick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherry"},"git_cherry_pick":{"type":"function","file":"cherrypick.h","line":78,"lineto":81,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherry_pick_options","type":"const git_cherry_pick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherry_pick_options *cherry_pick_options","sig":"git_repository *::git_commit *::const git_cherry_pick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherry"},"git_clone_init_options":{"type":"function","file":"clone.h","line":126,"lineto":128,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":146,"lineto":150,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>This version handles the simple case. If you&#39;d like to create the repository or remote with non-default settings, you can create and configure them and then use <code>git_clone_into()</code>.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.21.1/network/clone.html#git_clone-1"]}},"git_clone_into":{"type":"function","file":"clone.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to use"},{"name":"remote","type":"git_remote *","comment":"the remote repository to clone from"},{"name":"co_opts","type":"const git_checkout_options *","comment":"options to use during checkout"},{"name":"branch","type":"const char *","comment":"the branch to checkout after the clone, pass NULL for the\n        remote's default branch"},{"name":"signature","type":"const git_signature *","comment":"The identity used when updating the reflog."}],"argline":"git_repository *repo, git_remote *remote, const git_checkout_options *co_opts, const char *branch, const git_signature *signature","sig":"git_repository *::git_remote *::const git_checkout_options *::const char *::const git_signature *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone into a repository</p>\n","comments":"<p>After creating the repository and remote and configuring them for paths and callbacks respectively, you can call this function to perform the clone operation and optionally checkout files.</p>\n","group":"clone"},"git_clone_local_into":{"type":"function","file":"clone.h","line":197,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to use"},{"name":"remote","type":"git_remote *","comment":"the remote repository to clone from"},{"name":"co_opts","type":"const git_checkout_options *","comment":"options to use during checkout"},{"name":"branch","type":"const char *","comment":"the branch to checkout after the clone, pass NULL for the\n        remote's default branch"},{"name":"link","type":"int","comment":"wether to use hardlinks instead of copying\n objects. This is only possible if both repositories are on the same\n filesystem."},{"name":"signature","type":"const git_signature *","comment":"the identity used when updating the reflog"}],"argline":"git_repository *repo, git_remote *remote, const git_checkout_options *co_opts, const char *branch, int link, const git_signature *signature","sig":"git_repository *::git_remote *::const git_checkout_options *::const char *::int::const git_signature *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Perform a local clone into a repository</p>\n","comments":"<p>A &quot;local clone&quot; bypasses any git-aware protocols and simply copies over the object database from the source repository. It is often faster than a git-aware clone, but no verification of the data is performed, and can copy over too much data.</p>\n","group":"clone"},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_lookup-5","ex/v0.21.1/general.html#git_commit_lookup-6","ex/v0.21.1/general.html#git_commit_lookup-7"],"log.c":["ex/v0.21.1/log.html#git_commit_lookup-1"]}},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_free-8","ex/v0.21.1/general.html#git_commit_free-9","ex/v0.21.1/general.html#git_commit_free-10","ex/v0.21.1/general.html#git_commit_free-11"],"log.c":["ex/v0.21.1/log.html#git_commit_free-2","ex/v0.21.1/log.html#git_commit_free-3","ex/v0.21.1/log.html#git_commit_free-4","ex/v0.21.1/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_id-12"],"log.c":["ex/v0.21.1/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.21.1/log.html#git_commit_owner-7","ex/v0.21.1/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_message-3","ex/v0.21.1/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.21.1/general.html#git_commit_message-13","ex/v0.21.1/general.html#git_commit_message-14","ex/v0.21.1/general.html#git_commit_message-15"],"log.c":["ex/v0.21.1/log.html#git_commit_message-9","ex/v0.21.1/log.html#git_commit_message-10"],"tag.c":["ex/v0.21.1/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":136,"lineto":136,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_time-16","ex/v0.21.1/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":144,"lineto":144,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":152,"lineto":152,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.21.1/general.html#git_commit_committer-18"],"log.c":["ex/v0.21.1/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":160,"lineto":160,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.21.1/general.html#git_commit_author-19","ex/v0.21.1/general.html#git_commit_author-20"],"log.c":["ex/v0.21.1/log.html#git_commit_author-12","ex/v0.21.1/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":168,"lineto":168,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":177,"lineto":177,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.21.1/log.html#git_commit_tree-14","ex/v0.21.1/log.html#git_commit_tree-15","ex/v0.21.1/log.html#git_commit_tree-16","ex/v0.21.1/log.html#git_commit_tree-17","ex/v0.21.1/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":187,"lineto":187,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":195,"lineto":195,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.21.1/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.21.1/log.html#git_commit_parentcount-19","ex/v0.21.1/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":205,"lineto":208,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_parent-22"],"log.c":["ex/v0.21.1/log.html#git_commit_parent-21","ex/v0.21.1/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":219,"lineto":221,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.21.1/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":237,"lineto":240,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_amend":{"type":"function","file":"commit.h","line":345,"lineto":353,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":94,"lineto":94,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":124,"lineto":124,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":228,"lineto":228,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, or        &gt; `GIT_CONFIG_LEVEL_XDG`.  The search path is written to the `out`      &gt; buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be GIT_CONFIG_LEVEL_SYSTEM, GIT_CONFIG_LEVEL_GLOBAL,       &gt;   or GIT_CONFIG_LEVEL_XDG.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n</code></pre>\n","group":"libgit2"},"git_config_find_global":{"type":"function","file":"config.h","line":97,"lineto":97,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":126,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":138,"lineto":138,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":173,"lineto":177,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":192,"lineto":192,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND when the file doesn't exist\n or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_open_ondisk-23"]}},"git_config_open_level":{"type":"function","file":"config.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":243,"lineto":243,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_refresh":{"type":"function","file":"config.h","line":257,"lineto":257,"args":[{"name":"cfg","type":"git_config *","comment":"The configuration to refresh"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Reload changed config files</p>\n","comments":"<p>A config file may be changed on disk out from under the in-memory config object.  This function causes us to look for files that have been modified since we last loaded them and refresh the config with the latest information.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":264,"lineto":264,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":277,"lineto":280,"args":[{"name":"out","type":"const git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const git_config_entry **out, const git_config *cfg, const char *name","sig":"const git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>The git_config_entry is owned by the config and should not be freed by the user.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":294,"lineto":294,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_get_int32-24"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":308,"lineto":308,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":343,"lineto":343,"args":[{"name":"out","type":"const char **","comment":"pointer to the variable's value"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The string is owned by the variable and should not be freed by the user. The pointer will be valid until the next operation on this config object.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_get_string-25"]}},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":357,"lineto":357,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":368,"lineto":368,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":380,"lineto":380,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":387,"lineto":387,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":398,"lineto":398,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":409,"lineto":409,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":420,"lineto":420,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":434,"lineto":434,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":444,"lineto":444,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":453,"lineto":453,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":464,"lineto":464,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":482,"lineto":485,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":496,"lineto":496,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":508,"lineto":508,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":526,"lineto":530,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":597,"lineto":597,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":609,"lineto":609,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":621,"lineto":621,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":636,"lineto":640,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user"},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_diff_init_options":{"type":"function","file":"diff.h","line":398,"lineto":400,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":638,"lineto":640,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":654,"lineto":654,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_free-2"],"log.c":["ex/v0.21.1/log.html#git_diff_free-24","ex/v0.21.1/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":672,"lineto":677,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.21.1/log.html#git_diff_tree_to_tree-26","ex/v0.21.1/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":698,"lineto":703,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":725,"lineto":729,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":754,"lineto":758,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":773,"lineto":777,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_merge":{"type":"function","file":"diff.h","line":792,"lineto":794,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":808,"lineto":810,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_find_similar-8"]}},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":870,"lineto":870,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":897,"lineto":902,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":915,"lineto":915,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":940,"lineto":944,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_print-9"],"log.c":["ex/v0.21.1/log.html#git_diff_print-28"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":980,"lineto":989,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1094,"lineto":1096,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumlate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1146,"lineto":1146,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_stats_free-11"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1195,"lineto":1198,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1232,"lineto":1234,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":98,"lineto":98,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.21.1/general.html#giterr_last-26"],"network/clone.c":["ex/v0.21.1/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.21.1/network/git2.html#giterr_last-1","ex/v0.21.1/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":103,"lineto":103,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_detach":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[{"name":"cpy","type":"git_error *","comment":null}],"argline":"git_error *cpy","sig":"git_error *","return":{"type":"int","comment":null},"description":"<p>Get the last error data and clear it.</p>\n","comments":"<p>This copies the last error into the given <code>git_error</code> struct and returns 0 if the copy was successful, leaving the error cleared as if <code>giterr_clear</code> had been called.</p>\n\n<p>If there was no existing error in the library, -1 will be returned and the contents of <code>cpy</code> will be left unmodified.</p>\n","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":138,"lineto":138,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n\n<p>NOTE: Passing the <code>error_class</code> as GITERR_OS has a special behavior: we attempt to append the system default error message for the last OS error that occurred and then clear the last error.  The specific implementation of looking up and clearing this last OS error will vary by platform.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":149,"lineto":149,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":87,"lineto":93,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"options","type":"uint32_t","comment":"Combination of `git_filter_opt_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":115,"lineto":118,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":123,"lineto":127,"args":[{"name":"out","type":"git_buf *","comment":null},{"name":"filters","type":"git_filter_list *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"path","type":"const char *","comment":null}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":132,"lineto":135,"args":[{"name":"out","type":"git_buf *","comment":null},{"name":"filters","type":"git_filter_list *","comment":null},{"name":"blob","type":"git_blob *","comment":null}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":142,"lineto":142,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":181,"lineto":181,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":194,"lineto":194,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":201,"lineto":201,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.21.1/general.html#git_index_free-27"],"init.c":["ex/v0.21.1/init.html#git_index_free-1"]}},"git_index_owner":{"type":"function","file":"index.h","line":209,"lineto":209,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":217,"lineto":217,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":230,"lineto":230,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":249,"lineto":249,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":258,"lineto":258,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":266,"lineto":266,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":298,"lineto":298,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.21.1/init.html#git_index_write_tree-2"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":315,"lineto":315,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_clear":{"type":"function","file":"index.h","line":345,"lineto":345,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_bypath":{"type":"function","file":"index.h","line":373,"lineto":374,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":384,"lineto":384,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":394,"lineto":395,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":411,"lineto":411,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":423,"lineto":423,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":454,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":517,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":539,"lineto":543,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":568,"lineto":572,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":607,"lineto":611,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":627,"lineto":632,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":641,"lineto":641,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":649,"lineto":649,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":656,"lineto":656,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":667,"lineto":669,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":681,"lineto":685,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":692,"lineto":693,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_commit-2"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_hash-3"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_free-4"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":58,"lineto":60,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":165,"lineto":167,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":233,"lineto":235,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":317,"lineto":321,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.21.1/log.html#git_merge_base-29"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_merge_base-1"]}},"git_merge_head_from_ref":{"type":"function","file":"merge.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const git_reference *ref","sig":"git_merge_head **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given reference.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_from_fetchhead":{"type":"function","file":"merge.h","line":378,"lineto":383,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"oid","type":"const git_oid *","comment":"the commit object id to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *oid","sig":"git_merge_head **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given fetch head data.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_from_id":{"type":"function","file":"merge.h","line":394,"lineto":397,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const git_oid *id","sig":"git_merge_head **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given commit id.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_id":{"type":"function","file":"merge.h","line":405,"lineto":406,"args":[{"name":"head","type":"const git_merge_head *","comment":"the given merge head"}],"argline":"const git_merge_head *head","sig":"const git_merge_head *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_merge_head</code> refers to.</p>\n","comments":"","group":"merge"},"git_merge_head_free":{"type":"function","file":"merge.h","line":413,"lineto":414,"args":[{"name":"head","type":"git_merge_head *","comment":"merge head to free"}],"argline":"git_merge_head *head","sig":"git_merge_head *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_head</code>.</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":432,"lineto":437,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":453,"lineto":459,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":466,"lineto":466,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":484,"lineto":490,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":507,"lineto":512,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":74,"lineto":77,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"<p>The notes must not be freed manually by the user.</p>\n","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":105,"lineto":105,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":114,"lineto":114,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":131,"lineto":139,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *notes_ref, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const git_signature *::const git_signature *::const char *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":154,"lineto":159,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":166,"lineto":166,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_default_ref":{"type":"function","file":"notes.h","line":176,"lineto":176,"args":[{"name":"out","type":"const char **","comment":"Pointer to the default notes reference"},{"name":"repo","type":"git_repository *","comment":"The Git repository"}],"argline":"const char **out, git_repository *repo","sig":"const char **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the default notes reference for a repository</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":194,"lineto":198,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.21.1/log.html#git_object_lookup-30"]}},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.21.1/blame.html#git_object_id-8","ex/v0.21.1/blame.html#git_object_id-9","ex/v0.21.1/blame.html#git_object_id-10","ex/v0.21.1/blame.html#git_object_id-11"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_id-10","ex/v0.21.1/cat-file.html#git_object_id-11"],"log.c":["ex/v0.21.1/log.html#git_object_id-31","ex/v0.21.1/log.html#git_object_id-32","ex/v0.21.1/log.html#git_object_id-33","ex/v0.21.1/log.html#git_object_id-34"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_object_id-2","ex/v0.21.1/rev-parse.html#git_object_id-3","ex/v0.21.1/rev-parse.html#git_object_id-4","ex/v0.21.1/rev-parse.html#git_object_id-5","ex/v0.21.1/rev-parse.html#git_object_id-6"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.21.1/tag.html#git_object_short_id-3"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_type-12","ex/v0.21.1/cat-file.html#git_object_type-13","ex/v0.21.1/cat-file.html#git_object_type-14"],"tag.c":["ex/v0.21.1/tag.html#git_object_type-4"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.21.1/blame.html#git_object_free-12","ex/v0.21.1/blame.html#git_object_free-13","ex/v0.21.1/blame.html#git_object_free-14","ex/v0.21.1/blame.html#git_object_free-15"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_free-15"],"general.c":["ex/v0.21.1/general.html#git_object_free-28"],"log.c":["ex/v0.21.1/log.html#git_object_free-35"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_object_free-7","ex/v0.21.1/rev-parse.html#git_object_free-8","ex/v0.21.1/rev-parse.html#git_object_free-9"],"tag.c":["ex/v0.21.1/tag.html#git_object_free-5","ex/v0.21.1/tag.html#git_object_free-6","ex/v0.21.1/tag.html#git_object_free-7","ex/v0.21.1/tag.html#git_object_free-8"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_type2string-16","ex/v0.21.1/cat-file.html#git_object_type2string-17","ex/v0.21.1/cat-file.html#git_object_type2string-18","ex/v0.21.1/cat-file.html#git_object_type2string-19"],"general.c":["ex/v0.21.1/general.html#git_object_type2string-29"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":218,"lineto":221,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes (e.g. a tag will be chased until the referenced object is no longer a tag).</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":230,"lineto":230,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_free-20"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_read-21"],"general.c":["ex/v0.21.1/general.html#git_odb_read-30"]}},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_object_free-22"],"general.c":["ex/v0.21.1/general.html#git_odb_object_free-31"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.21.1/general.html#git_odb_object_data-32"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.21.1/general.html#git_odb_object_type-33"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.21.1/general.html#git_oid_fromstr-34","ex/v0.21.1/general.html#git_oid_fromstr-35","ex/v0.21.1/general.html#git_oid_fromstr-36","ex/v0.21.1/general.html#git_oid_fromstr-37","ex/v0.21.1/general.html#git_oid_fromstr-38","ex/v0.21.1/general.html#git_oid_fromstr-39","ex/v0.21.1/general.html#git_oid_fromstr-40","ex/v0.21.1/general.html#git_oid_fromstr-41"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.21.1/general.html#git_oid_fmt-42","ex/v0.21.1/general.html#git_oid_fmt-43","ex/v0.21.1/general.html#git_oid_fmt-44","ex/v0.21.1/general.html#git_oid_fmt-45","ex/v0.21.1/general.html#git_oid_fmt-46"],"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_oid_fmt-1","ex/v0.21.1/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_oid_fmt-5"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_allocfmt":{"type":"function","file":"oid.h","line":125,"lineto":125,"args":[{"name":"id","type":"const git_oid *","comment":"the oid structure to format"}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string; NULL if memory is exhausted. Caller must\n\t\t\tdeallocate the string with git__free()."},"description":"<p>Format a git_oid into a newly allocated c-string.</p>\n","comments":"","group":"oid"},"git_oid_cpy":{"type":"function","file":"oid.h","line":152,"lineto":152,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.21.1/blame.html#git_oid_cpy-16","ex/v0.21.1/blame.html#git_oid_cpy-17","ex/v0.21.1/blame.html#git_oid_cpy-18"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":161,"lineto":161,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":170,"lineto":170,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":190,"lineto":190,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":200,"lineto":200,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":207,"lineto":207,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.21.1/blame.html#git_oid_iszero-19"],"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":254,"lineto":254,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":261,"lineto":261,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":139,"lineto":144,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":154,"lineto":154,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":166,"lineto":166,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":174,"lineto":174,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":182,"lineto":182,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":201,"lineto":204,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":211,"lineto":211,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":74,"lineto":80,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":139,"lineto":139,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":144,"lineto":144,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch</p>\n","comments":"","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":257,"lineto":260,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":269,"lineto":271,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_new-36"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_free-37"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_match_tree-38"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_push_init_options":{"type":"function","file":"push.h","line":51,"lineto":53,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_push_new":{"type":"function","file":"push.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_push **","comment":"New push object"},{"name":"remote","type":"git_remote *","comment":"Remote instance"}],"argline":"git_push **out, git_remote *remote","sig":"git_push **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new push object</p>\n","comments":"","group":"push"},"git_push_set_options":{"type":"function","file":"push.h","line":80,"lineto":82,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"opts","type":"const git_push_options *","comment":"The options to set on the push object"}],"argline":"git_push *push, const git_push_options *opts","sig":"git_push *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set options on a push object</p>\n","comments":"","group":"push"},"git_push_set_callbacks":{"type":"function","file":"push.h","line":98,"lineto":103,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"pack_progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"pack_progress_cb_payload","type":"void *","comment":"Payload for the pack progress callback."},{"name":"transfer_progress_cb","type":"git_push_transfer_progress","comment":"Function to call with progress information during\n the upload portion of a push. Be aware that this is called inline with\n pack building operations, so performance may be affected."},{"name":"transfer_progress_cb_payload","type":"void *","comment":"Payload for the network progress callback."}],"argline":"git_push *push, git_packbuilder_progress pack_progress_cb, void *pack_progress_cb_payload, git_push_transfer_progress transfer_progress_cb, void *transfer_progress_cb_payload","sig":"git_push *::git_packbuilder_progress::void *::git_push_transfer_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a push</p>\n","comments":"","group":"push"},"git_push_add_refspec":{"type":"function","file":"push.h","line":113,"lineto":113,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"refspec","type":"const char *","comment":"Refspec string"}],"argline":"git_push *push, const char *refspec","sig":"git_push *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a refspec to be pushed</p>\n","comments":"","group":"push"},"git_push_update_tips":{"type":"function","file":"push.h","line":125,"lineto":128,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n                       default is \"update by push\"."}],"argline":"git_push *push, const git_signature *signature, const char *reflog_message","sig":"git_push *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update remote tips after a push</p>\n","comments":"","group":"push"},"git_push_finish":{"type":"function","file":"push.h","line":142,"lineto":142,"args":[{"name":"push","type":"git_push *","comment":"The push object"}],"argline":"git_push *push","sig":"git_push *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Actually push all given refspecs</p>\n","comments":"<p>Note: To check if the push was successful (i.e. all remote references have been updated as requested), you need to call both <code>git_push_unpack_ok</code> and <code>git_push_status_foreach</code>. The remote repository might have refused to update some or all of the references.</p>\n","group":"push"},"git_push_unpack_ok":{"type":"function","file":"push.h","line":151,"lineto":151,"args":[{"name":"push","type":"const git_push *","comment":"The push object"}],"argline":"const git_push *push","sig":"const git_push *","return":{"type":"int","comment":" true if remote side successfully unpacked, false otherwise"},"description":"<p>Check if remote side successfully unpacked</p>\n","comments":"","group":"push"},"git_push_status_foreach":{"type":"function","file":"push.h","line":168,"lineto":170,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"cb","type":"int (*)(const char *, const char *, void *)","comment":"The callback to call on each object"},{"name":"data","type":"void *","comment":null}],"argline":"git_push *push, int (*)(const char *, const char *, void *) cb, void *data","sig":"git_push *::int (*)(const char *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Invoke callback `cb&#39; on each status entry</p>\n","comments":"<p>For each of the updated references, we receive a status report in the form of <code>ok refs/heads/master</code> or <code>ng refs/heads/master &lt;msg&gt;</code>. <code>msg != NULL</code> means the reference has not been updated for the given reason.</p>\n\n<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"push"},"git_push_free":{"type":"function","file":"push.h","line":177,"lineto":177,"args":[{"name":"push","type":"git_push *","comment":"The push object"}],"argline":"git_push *push","sig":"git_push *","return":{"type":"void","comment":null},"description":"<p>Free the given push object</p>\n","comments":"","group":"push"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_lookup-47"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is refering to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":110,"lineto":110,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":185,"lineto":185,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":229,"lineto":229,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":244,"lineto":244,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_target-48"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":255,"lineto":255,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":265,"lineto":265,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_symbolic_target-49"]}},"git_reference_type":{"type":"function","file":"refs.h","line":275,"lineto":275,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_type-50"]}},"git_reference_name":{"type":"function","file":"refs.h","line":285,"lineto":285,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":303,"lineto":303,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":311,"lineto":311,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":334,"lineto":339,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":356,"lineto":361,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":387,"lineto":393,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":408,"lineto":408,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":419,"lineto":419,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":433,"lineto":433,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_list-51"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":451,"lineto":454,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":469,"lineto":472,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":479,"lineto":479,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.21.1/status.html#git_reference_free-1"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":488,"lineto":490,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":499,"lineto":501,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":512,"lineto":515,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":524,"lineto":524,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":537,"lineto":537,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":544,"lineto":544,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":564,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":578,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":630,"lineto":630,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":701,"lineto":704,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":720,"lineto":720,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":734,"lineto":734,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.21.1/status.html#git_reference_shorthand-2"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.  This\n calls git_remote_save before returning.</p>\n","comments":"","group":"remote"},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":57,"lineto":62,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.  This\n calls git_remote_save before returning.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":80,"lineto":84,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"},{"name":"fetch","type":"const char *","comment":"the fetch refspec to use for this remote."}],"argline":"git_remote **out, git_repository *repo, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url and refspec in memory. You can use this when you have a URL instead of a remote&#39;s name.  Note that anonymous remotes cannot be converted to persisted remotes.</p>\n\n<p>The name, when provided, will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_load":{"type":"function","file":"remote.h","line":97,"lineto":97,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_load-5"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_load-3"]}},"git_remote_save":{"type":"function","file":"remote.h","line":108,"lineto":108,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to save to config"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code"},"description":"<p>Save a remote to its repository&#39;s configuration</p>\n","comments":"<p>One can&#39;t save a in-memory remote. Doing so will result in a GIT_EINVALIDSPEC being returned.</p>\n","group":"remote"},"git_remote_dup":{"type":"function","file":"remote.h","line":120,"lineto":120,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":128,"lineto":128,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":136,"lineto":136,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":144,"lineto":144,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"","group":"remote"},"git_remote_pushurl":{"type":"function","file":"remote.h","line":152,"lineto":152,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"","group":"remote"},"git_remote_set_url":{"type":"function","file":"remote.h","line":163,"lineto":163,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_remote *remote, const char *url","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url</p>\n","comments":"<p>Existing connections will not be updated.</p>\n","group":"remote"},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":174,"lineto":174,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"url","type":"const char *","comment":"the url to set or NULL to clear the pushurl"}],"argline":"git_remote *remote, const char *url","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url for pushing</p>\n","comments":"<p>Existing connections will not be updated.</p>\n","group":"remote"},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":186,"lineto":186,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_remote *remote, const char *refspec","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Add a fetch refspec to the remote</p>\n","comments":"<p>Convenience function for adding a single fetch refspec to the current list in the remote.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":197,"lineto":197,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_set_fetch_refspecs":{"type":"function","file":"remote.h","line":207,"lineto":207,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to modify"},{"name":"array","type":"git_strarray *","comment":"the new list of fetch resfpecs"}],"argline":"git_remote *remote, git_strarray *array","sig":"git_remote *::git_strarray *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The contents of the string array are copied.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":219,"lineto":219,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_remote *remote, const char *refspec","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Add a push refspec to the remote</p>\n","comments":"<p>Convenience function for adding a single push refspec to the current list in the remote.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":230,"lineto":230,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_set_push_refspecs":{"type":"function","file":"remote.h","line":240,"lineto":240,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to modify"},{"name":"array","type":"git_strarray *","comment":"the new list of push resfpecs"}],"argline":"git_remote *remote, git_strarray *array","sig":"git_remote *::git_strarray *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s list of push refspecs</p>\n","comments":"<p>The contents of the string array are copied.</p>\n","group":"remote"},"git_remote_clear_refspecs":{"type":"function","file":"remote.h","line":249,"lineto":249,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Clear the refspecs</p>\n","comments":"<p>Remove all configured fetch and push refspecs from the remote.</p>\n","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"}],"argline":"git_remote *remote, git_direction direction","sig":"git_remote *::git_direction","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_connect-6"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_download":{"type":"function","file":"remote.h","line":311,"lineto":311,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_download-7"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":322,"lineto":322,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":332,"lineto":332,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":342,"lineto":342,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote and free the underlying transport.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_disconnect-8"]}},"git_remote_free":{"type":"function","file":"remote.h","line":352,"lineto":352,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_free-9","ex/v0.21.1/network/fetch.html#git_remote_free-10"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_free-5"]}},"git_remote_update_tips":{"type":"function","file":"remote.h","line":364,"lineto":367,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n                       default is \"fetch \n<name\n>\", where \n<name\n> is the name of\n                       the remote (or its url, for in-memory remotes)."}],"argline":"git_remote *remote, const git_signature *signature, const char *reflog_message","sig":"git_remote *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_update_tips-11"]}},"git_remote_fetch":{"type":"function","file":"remote.h","line":381,"lineto":384,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_signature *signature, const char *reflog_message","sig":"git_remote *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote"},"git_remote_valid_url":{"type":"function","file":"remote.h","line":392,"lineto":392,"args":[{"name":"url","type":"const char *","comment":"the url to check"}],"argline":"const char *url","sig":"const char *","return":{"type":"int","comment":" 1 if the url is valid, 0 otherwise"},"description":"<p>Return whether a string is a valid remote URL</p>\n","comments":"","group":"remote"},"git_remote_supported_url":{"type":"function","file":"remote.h","line":400,"lineto":400,"args":[{"name":"url","type":"const char *","comment":"the url to check"}],"argline":"const char *url","sig":"const char *","return":{"type":"int","comment":" 1 if the url is supported, 0 otherwise"},"description":"<p>Return whether the passed URL is supported by this version of the library.</p>\n","comments":"","group":"remote"},"git_remote_list":{"type":"function","file":"remote.h","line":411,"lineto":411,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote"},"git_remote_check_cert":{"type":"function","file":"remote.h","line":419,"lineto":419,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"check","type":"int","comment":"whether to check the server's certificate (defaults to yes)"}],"argline":"git_remote *remote, int check","sig":"git_remote *::int","return":{"type":"void","comment":null},"description":"<p>Choose whether to check the server&#39;s certificate (applies to HTTPS only)</p>\n","comments":"","group":"remote"},"git_remote_set_transport":{"type":"function","file":"remote.h","line":433,"lineto":435,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"transport","type":"git_transport *","comment":"the transport object for the remote to use"}],"argline":"git_remote *remote, git_transport *transport","sig":"git_remote *::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets a custom transport for the remote. The caller can use this function\n to bypass the automatic discovery of a transport by URL scheme (i.e.\n http://, https://, git://) and supply their own transport to be used\n instead. After providing the transport to a remote using this function,\n the transport object belongs exclusively to that remote, and the remote will\n free it when it is freed with git_remote_free.</p>\n","comments":"","group":"remote"},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":508,"lineto":510,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_remote_set_callbacks":{"type":"function","file":"remote.h","line":522,"lineto":522,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"a pointer to the user's callback settings"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a remote</p>\n","comments":"<p>Note that the remote keeps its own copy of the data and you need to call this function again if you want to change the callbacks.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_set_callbacks-12"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_set_callbacks-6"]}},"git_remote_get_callbacks":{"type":"function","file":"remote.h","line":533,"lineto":533,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to query"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_remote_callbacks *","comment":" a pointer to the callbacks structure"},"description":"<p>Retrieve the current callback structure</p>\n","comments":"<p>This provides read access to the callbacks structure as the remote sees it.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":538,"lineto":538,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_stats-13"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":552,"lineto":552,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":560,"lineto":562,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"value","type":"git_remote_autotag_option_t","comment":"a GIT_REMOTE_DOWNLOAD_TAGS value"}],"argline":"git_remote *remote, git_remote_autotag_option_t value","sig":"git_remote *::git_remote_autotag_option_t","return":{"type":"void","comment":null},"description":"<p>Set the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":582,"lineto":585,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on succesful return."},{"name":"remote","type":"git_remote *","comment":"the remote to rename"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_remote *remote, const char *new_name","sig":"git_strarray *::git_remote *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>A temporary in-memory remote cannot be given a name with this method.</p>\n","group":"remote"},"git_remote_update_fetchhead":{"type":"function","file":"remote.h","line":593,"lineto":593,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to query"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" the update FETCH_HEAD setting"},"description":"<p>Retrieve the update FETCH_HEAD setting.</p>\n","comments":"","group":"remote"},"git_remote_set_update_fetchhead":{"type":"function","file":"remote.h","line":602,"lineto":602,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"value","type":"int","comment":"0 to disable updating FETCH_HEAD"}],"argline":"git_remote *remote, int value","sig":"git_remote *::int","return":{"type":"void","comment":null},"description":"<p>Sets the update FETCH_HEAD setting.  By default, FETCH_HEAD will be\n updated on every fetch.  Set to 0 to disable.</p>\n","comments":"","group":"remote"},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":610,"lineto":610,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":621,"lineto":621,"args":[{"name":"remote","type":"git_remote *","comment":"A valid remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote"},"git_remote_default_branch":{"type":"function","file":"remote.h","line":639,"lineto":639,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.21.1/general.html#git_repository_open-52"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_repository_open-3"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository"},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.21.1/blame.html#git_repository_open_ext-20"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_open_ext-23"],"diff.c":["ex/v0.21.1/diff.html#git_repository_open_ext-12"],"log.c":["ex/v0.21.1/log.html#git_repository_open_ext-39","ex/v0.21.1/log.html#git_repository_open_ext-40"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_repository_open_ext-10"],"status.c":["ex/v0.21.1/status.html#git_repository_open_ext-3"],"tag.c":["ex/v0.21.1/tag.html#git_repository_open_ext-9"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.21.1/blame.html#git_repository_free-21"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_free-24"],"diff.c":["ex/v0.21.1/diff.html#git_repository_free-13"],"general.c":["ex/v0.21.1/general.html#git_repository_free-53"],"init.c":["ex/v0.21.1/init.html#git_repository_free-3"],"log.c":["ex/v0.21.1/log.html#git_repository_free-41"],"network/clone.c":["ex/v0.21.1/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_repository_free-4"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_repository_free-11"],"status.c":["ex/v0.21.1/status.html#git_repository_free-4"],"tag.c":["ex/v0.21.1/tag.html#git_repository_free-10"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_init-4"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":278,"lineto":280,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":295,"lineto":298,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_init_ext-5"]}},"git_repository_head":{"type":"function","file":"repository.h","line":313,"lineto":313,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.21.1/status.html#git_repository_head-5"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":325,"lineto":325,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":337,"lineto":337,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":349,"lineto":349,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":360,"lineto":360,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_path-6"],"status.c":["ex/v0.21.1/status.html#git_repository_path-6"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_workdir-7"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":390,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":399,"lineto":399,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.21.1/status.html#git_repository_is_bare-7"]}},"git_repository_config":{"type":"function","file":"repository.h","line":415,"lineto":415,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":431,"lineto":431,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":447,"lineto":447,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_odb-25"],"general.c":["ex/v0.21.1/general.html#git_repository_odb-54"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":463,"lineto":463,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":479,"lineto":479,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.21.1/general.html#git_repository_index-55"],"init.c":["ex/v0.21.1/init.html#git_repository_index-8"]}},"git_repository_message":{"type":"function","file":"repository.h","line":497,"lineto":497,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":504,"lineto":504,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":513,"lineto":513,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":532,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":552,"lineto":555,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":580,"lineto":585,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":607,"lineto":611,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const char *refname, const git_signature *signature, const char *log_message","sig":"git_repository *::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":631,"lineto":635,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const git_oid *commitish, const git_signature *signature, const char *log_message","sig":"git_repository *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":656,"lineto":659,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"reflog_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const git_signature *signature, const char *reflog_message","sig":"git_repository *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":681,"lineto":681,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":695,"lineto":695,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":703,"lineto":703,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":712,"lineto":712,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_revert_init_options":{"type":"function","file":"revert.h","line":44,"lineto":46,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":62,"lineto":68,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":78,"lineto":81,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.21.1/blame.html#git_revparse_single-22"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_revparse_single-26"],"log.c":["ex/v0.21.1/log.html#git_revparse_single-42"],"tag.c":["ex/v0.21.1/tag.html#git_revparse_single-11","ex/v0.21.1/tag.html#git_revparse_single-12","ex/v0.21.1/tag.html#git_revparse_single-13","ex/v0.21.1/tag.html#git_revparse_single-14"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.21.1/blame.html#git_revparse-23"],"log.c":["ex/v0.21.1/log.html#git_revparse-43"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_revparse-12","ex/v0.21.1/rev-parse.html#git_revparse-13"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_new-56"],"log.c":["ex/v0.21.1/log.html#git_revwalk_new-44","ex/v0.21.1/log.html#git_revwalk_new-45"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":85,"lineto":85,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":102,"lineto":102,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit to start traversal from.</p>\n","comments":"<p>The given OID must belong to a committish on the walked repository.</p>\n\n<p>The given commit will be used as one of the roots when starting the revision walk. At least one commit must be pushed onto the walker before a walk can be started.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_push-57"],"log.c":["ex/v0.21.1/log.html#git_revwalk_push-46"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":120,"lineto":120,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":128,"lineto":128,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.21.1/log.html#git_revwalk_push_head-47"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":143,"lineto":143,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given OID must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.21.1/log.html#git_revwalk_hide-48"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":162,"lineto":162,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":170,"lineto":170,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":181,"lineto":181,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":192,"lineto":192,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":212,"lineto":212,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_next-58"],"log.c":["ex/v0.21.1/log.html#git_revwalk_next-49"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":223,"lineto":223,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_sorting-59"],"log.c":["ex/v0.21.1/log.html#git_revwalk_sorting-50","ex/v0.21.1/log.html#git_revwalk_sorting-51"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":238,"lineto":238,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":253,"lineto":253,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_free-60"],"log.c":["ex/v0.21.1/log.html#git_revwalk_free-52"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":262,"lineto":262,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":283,"lineto":286,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.21.1/general.html#git_signature_new-61","ex/v0.21.1/general.html#git_signature_new-62"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.21.1/init.html#git_signature_default-9"],"tag.c":["ex/v0.21.1/tag.html#git_signature_default-15"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.21.1/init.html#git_signature_free-10"],"tag.c":["ex/v0.21.1/tag.html#git_signature_free-16"]}},"git_stash_foreach":{"type":"function","file":"stash.h","line":95,"lineto":98,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":191,"lineto":193,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":231,"lineto":234,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_foreach-8"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":255,"lineto":259,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_foreach_ext-9"]}},"git_status_file":{"type":"function","file":"status.h","line":286,"lineto":289,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to retrieve status for relative to the repo workdir"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":304,"lineto":307,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_list_new-10","ex/v0.21.1/status.html#git_status_list_new-11"]}},"git_status_list_free":{"type":"function","file":"status.h","line":339,"lineto":340,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_list_free-12"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":358,"lineto":361,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.21.1/general.html#git_strarray_free-63"],"tag.c":["ex/v0.21.1/tag.html#git_strarray_free-17"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":135,"lineto":138,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_lookup-13"]}},"git_submodule_free":{"type":"function","file":"submodule.h","line":145,"lineto":145,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_free-14"]}},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":165,"lineto":168,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"int (*)(git_submodule *, const char *, void *)","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, int (*)(git_submodule *, const char *, void *) callback, void *payload","sig":"git_repository *::int (*)(git_submodule *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as decribed therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_foreach-15"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":195,"lineto":200,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":212,"lineto":212,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":224,"lineto":226,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_save":{"type":"function","file":"submodule.h","line":240,"lineto":240,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Write submodule settings to .gitmodules file.</p>\n","comments":"<p>This commits any in-memory changes to the submodule to the gitmodules file on disk.  You may also be interested in <code>git_submodule_init()</code> which writes submodule info to &quot;.git/config&quot; (which is better for local changes to submodule settings) and/or <code>git_submodule_sync()</code> which writes settings about remotes to the actual submodule repository.</p>\n","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":253,"lineto":253,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":261,"lineto":261,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_name-16"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":272,"lineto":272,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_path-17"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":280,"lineto":280,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":314,"lineto":314,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to the submodule object"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_submodule *submodule, const char *url","sig":"git_submodule *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule.</p>\n","comments":"<p>This sets the URL in memory for the submodule. This will be used for any following submodule actions while this submodule data is in memory.</p>\n\n<p>After calling this, you may wish to call <code>git_submodule_save()</code> to write the changes back to the &quot;.gitmodules&quot; file and <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":322,"lineto":322,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":330,"lineto":330,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":343,"lineto":343,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":371,"lineto":372,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n\n<p>plus the special <strong>GIT_SUBMODULE_IGNORE_RESET</strong> which can be used with <code>git_submodule_set_ignore()</code> to revert to the on-disk setting.</p>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":390,"lineto":392,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to update"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_submodule *submodule, git_submodule_ignore_t ignore","sig":"git_submodule *::git_submodule_ignore_t","return":{"type":"git_submodule_ignore_t","comment":" old value for ignore"},"description":"<p>Set the ignore rule for the submodule.</p>\n","comments":"<p>This sets the in-memory ignore rule for the submodule which will control the behavior of <code>git_submodule_status()</code>.</p>\n\n<p>To make changes persistent, call <code>git_submodule_save()</code> to write the value to disk (in the &quot;.gitmodules&quot; and &quot;.git/config&quot; files).</p>\n\n<p>Call with <code>GIT_SUBMODULE_IGNORE_RESET</code> or call <code>git_submodule_reload()</code> to revert the in-memory rule to the value that is on disk.</p>\n","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":406,"lineto":407,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code> plus the <code>GIT_SUBMODULE_UPDATE_RESET</code> which can be used to revert to the on-disk setting.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":425,"lineto":427,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to update"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_submodule *submodule, git_submodule_update_t update","sig":"git_submodule *::git_submodule_update_t","return":{"type":"git_submodule_update_t","comment":" old value for update"},"description":"<p>Set the update rule for the submodule.</p>\n","comments":"<p>The initial value comes from the &quot;.git/config&quot; setting of <code>submodule.$name.update</code> for this submodule (which is initialized from the &quot;.gitmodules&quot; file).  Using this function sets the update rule in memory for the submodule.  Call <code>git_submodule_save()</code> to write out the new update rule.</p>\n\n<p>Calling this again with GIT_SUBMODULE_UPDATE_RESET or calling <code>git_submodule_reload()</code> will revert the rule to the on disk value.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":440,"lineto":441,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":454,"lineto":456,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to modify"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_submodule *submodule, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_submodule *::git_submodule_recurse_t","return":{"type":"git_submodule_recurse_t","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This sets the submodule.<name>.fetchRecurseSubmodules value for the submodule.  You should call <code>git_submodule_save()</code> if you want to persist the new value.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":471,"lineto":471,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":481,"lineto":481,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":495,"lineto":497,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":509,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_reload_all":{"type":"function","file":"submodule.h","line":520,"lineto":520,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to reload submodule data for"},{"name":"force","type":"int","comment":"Force full reload even if the data doesn't seem out of date"}],"argline":"git_repository *repo, int force","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread all submodule info.</p>\n","comments":"<p>Call this to reload all cached submodule information for the repo.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":535,"lineto":537,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule - which can be set either temporarily or permanently with <code>git_submodule_set_ignore()</code>.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_status-18"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":553,"lineto":555,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":82,"lineto":84,"args":[{"name":"backend","type":"git_config_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":104,"lineto":108,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":80,"lineto":81,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":86,"lineto":87,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_options":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_opt_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":281,"lineto":282,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":297,"lineto":297,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":100,"lineto":102,"args":[{"name":"backend","type":"git_odb_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":169,"lineto":171,"args":[{"name":"backend","type":"git_refdb_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":184,"lineto":186,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":22,"lineto":25,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":34,"lineto":36,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.21.1/general.html#git_tag_lookup-64"]}},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.21.1/general.html#git_tag_target-65"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_target_id-27"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_target_type-28"],"general.c":["ex/v0.21.1/general.html#git_tag_target_type-66"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_name-29"],"general.c":["ex/v0.21.1/general.html#git_tag_name-67"],"tag.c":["ex/v0.21.1/tag.html#git_tag_name-18"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_tagger-30"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_message-31","ex/v0.21.1/cat-file.html#git_tag_message-32"],"general.c":["ex/v0.21.1/general.html#git_tag_message-68"],"tag.c":["ex/v0.21.1/tag.html#git_tag_message-19"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_create-20"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_create_lightweight-21"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_delete-22"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_list_match-23"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_threads_init":{"type":"function","file":"threads.h","line":33,"lineto":33,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Init the threading system.</p>\n","comments":"<p>If libgit2 has been built with GIT_THREADS on, this function must be called once before any other library functions.</p>\n\n<p>If libgit2 has been built without GIT_THREADS support, this function is a no-op.</p>\n","group":"threads","examples":{"blame.c":["ex/v0.21.1/blame.html#git_threads_init-24"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_threads_init-33"],"diff.c":["ex/v0.21.1/diff.html#git_threads_init-14"],"init.c":["ex/v0.21.1/init.html#git_threads_init-11"],"log.c":["ex/v0.21.1/log.html#git_threads_init-53"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_threads_init-5"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_threads_init-14"],"status.c":["ex/v0.21.1/status.html#git_threads_init-19"],"tag.c":["ex/v0.21.1/tag.html#git_threads_init-24"]}},"git_threads_shutdown":{"type":"function","file":"threads.h","line":45,"lineto":45,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Shutdown the threading system.</p>\n","comments":"<p>If libgit2 has been built with GIT_THREADS on, this function must be called before shutting down the library.</p>\n\n<p>If libgit2 has been built without GIT_THREADS support, this function is a no-op.</p>\n","group":"threads","examples":{"blame.c":["ex/v0.21.1/blame.html#git_threads_shutdown-25"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_threads_shutdown-34"],"diff.c":["ex/v0.21.1/diff.html#git_threads_shutdown-15"],"init.c":["ex/v0.21.1/init.html#git_threads_shutdown-12"],"log.c":["ex/v0.21.1/log.html#git_threads_shutdown-54"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_threads_shutdown-15"],"status.c":["ex/v0.21.1/status.html#git_threads_shutdown-20"],"tag.c":["ex/v0.21.1/tag.html#git_threads_shutdown-25"]}},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":116,"lineto":116,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":127,"lineto":130,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":143,"lineto":148,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":159,"lineto":163,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":173,"lineto":175,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":209,"lineto":209,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_transport_init":{"type":"function","file":"transport.h","line":323,"lineto":325,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"transport.h","line":337,"lineto":337,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_register":{"type":"function","file":"transport.h","line":357,"lineto":361,"args":[{"name":"prefix","type":"const char *","comment":"The scheme (ending in \"://\") to match, i.e. \"git://\""},{"name":"priority","type":"unsigned int","comment":"The priority of this transport relative to others with\n\t\tthe same prefix. Built-in transports have a priority of 1."},{"name":"cb","type":"git_transport_cb","comment":"The callback used to create an instance of the transport"},{"name":"param","type":"void *","comment":"A fixed parameter to pass to cb at creation time"}],"argline":"const char *prefix, unsigned int priority, git_transport_cb cb, void *param","sig":"const char *::unsigned int::git_transport_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a custom transport definition, to be used in addition to the built-in\n set of transports that come with libgit2.</p>\n","comments":"<p>The caller is responsible for synchronizing calls to git_transport_register and git_transport_unregister with other calls to the library that instantiate transports.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"transport.h","line":372,"lineto":374,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"},{"name":"priority","type":"unsigned int","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix, unsigned int priority","sig":"const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"transport.h","line":387,"lineto":390,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"transport.h","line":400,"lineto":403,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"transport.h","line":413,"lineto":416,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"transport.h","line":513,"lineto":515,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"transport.h","line":524,"lineto":526,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"transport.h","line":535,"lineto":537,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_lookup-69","ex/v0.21.1/general.html#git_tree_lookup-70"],"init.c":["ex/v0.21.1/init.html#git_tree_lookup-13"]}},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.21.1/diff.html#git_tree_free-16","ex/v0.21.1/diff.html#git_tree_free-17"],"init.c":["ex/v0.21.1/init.html#git_tree_free-14"],"log.c":["ex/v0.21.1/log.html#git_tree_free-55","ex/v0.21.1/log.html#git_tree_free-56","ex/v0.21.1/log.html#git_tree_free-57","ex/v0.21.1/log.html#git_tree_free-58","ex/v0.21.1/log.html#git_tree_free-59"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_entry_byname-71"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_name-35"],"general.c":["ex/v0.21.1/general.html#git_tree_entry_name-72","ex/v0.21.1/general.html#git_tree_entry_name-73"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_id-36"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_type-37"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_filemode-38"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_entry_to_object-74"]}},"git_treebuilder_create":{"type":"function","file":"tree.h","line":253,"lineto":254,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, const git_tree *source","sig":"git_treebuilder **::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":261,"lineto":261,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":269,"lineto":269,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":280,"lineto":280,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":292,"lineto":293,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":320,"lineto":325,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":333,"lineto":334,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":357,"lineto":360,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":373,"lineto":374,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_repository *repo, git_treebuilder *bld","sig":"git_oid *::git_repository *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":404,"lineto":408,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":210,"lineto":216,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":219,"lineto":223,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"int","comment":null},{"name":"total_steps","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, int completed_steps, int total_steps, void *payload","sig":"const char *::int::int::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":329,"lineto":333,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":409,"lineto":412,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":430,"lineto":433,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":484,"lineto":488,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":138,"lineto":139,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":54,"lineto":54,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":185,"lineto":189,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_push_transfer_progress":{"type":"callback","file":"push.h","line":56,"lineto":60,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, int bytes, void *payload","sig":"unsigned int::unsigned int::int::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":27,"lineto":27,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":272,"lineto":274,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":75,"lineto":79,"args":[{"name":"index","type":"int","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"int index, const char *message, const int *stash_id, void *payload","sig":"int::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop"},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":59,"lineto":60,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":152,"lineto":152,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":164,"lineto":164,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":186,"lineto":190,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":204,"lineto":209,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":219,"lineto":221,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":223,"lineto":228,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":343,"lineto":344,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":378,"lineto":379,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":244,"lineto":244,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""}},"globals":{},"types":[["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["uint16_t lines_in_hunk","git_oid final_commit_id","uint16_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","uint16_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":116,"lineto":129,"block":"uint16_t lines_in_hunk\ngit_oid final_commit_id\nuint16_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nuint16_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"uint16_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"uint16_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"uint16_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","uint32_t min_line","uint32_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":71,"lineto":80,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nuint32_t min_line\nuint32_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"uint32_t","name":"min_line","comments":""},{"type":"uint32_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":78,"lineto":78,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":193,"lineto":197,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":198,"lineto":207,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_SAFE_CREATE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":108,"lineto":170,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_SAFE_CREATE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of four strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n</ul>\n\n<p>In between those are <code>GIT_CHECKOUT_SAFE</code> and <code>GIT_CHECKOUT_SAFE_CREATE</code> both of which only make modifications that will not lose changes.</p>\n\n<pre><code>                     |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | create if SAFE_CREATE |     create file      |      baseline present   | notify dirty DELETED  |                      |    ---------------------|-----------------------|----------------------|\n</code></pre>\n\n<p>The only difference between SAFE and SAFE_CREATE is that SAFE_CREATE will cause a file to be checked out if it is missing from the working directory even if it is not modified between the target and baseline.</p>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE_CREATE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>To emulate <code>git clone</code> use <code>GIT_CHECKOUT_SAFE_CREATE</code> in the options.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_SAFE_CREATE","comments":"<p>Allow safe updates plus creation of missing files </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that </p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":32,"lineto":52,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherry_pick","git_cherry_pick_commit","git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_free","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_string","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_refresh","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, const git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend *) refresh\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend *)","name":"refresh","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":56,"block":"GIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":108,"lineto":108,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":88,"lineto":93,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":77,"lineto":83,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["char * username","char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"char * username\nchar * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":54,"lineto":58,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE"],"type":"enum","file":"transport.h","line":28,"lineto":43,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE"],"type":"enum","file":"diff.h","line":230,"lineto":240,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_status_char"]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":204,"lineto":204,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_patch_get_delta"],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blobs","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":307,"lineto":314,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_patch_get_delta"],"needs":["git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":263,"lineto":269,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_foreach"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":493,"lineto":562,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID"],"type":"enum","file":"diff.h","line":214,"lineto":218,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1151,"lineto":1158,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":920,"lineto":926,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":"git_diff_hunk","type":"struct","value":"git_diff_hunk","file":"diff.h","line":417,"lineto":417,"tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","used":{"returns":[],"needs":["git_diff_blobs","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_line",{"decl":"git_diff_line","type":"struct","value":"git_diff_line","file":"diff.h","line":465,"lineto":465,"tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","used":{"returns":[],"needs":["git_diff_blobs","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":444,"lineto":460,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":194,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags means to\n  apply it as an exact match instead of as an fnmatch pattern.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":567,"lineto":577,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, int, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1065,"lineto":1065,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_free"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1070,"lineto":1085,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":55,"lineto":58,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":["giterr_detach"]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_EMERGECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":47,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_EMERGECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>Merge conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK"],"type":"enum","file":"errors.h","line":61,"lineto":90,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH"],"type":"enum","file":"common.h","line":100,"lineto":104,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_NEW","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":200,"lineto":207,"block":"GIT_FILEMODE_NEW\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_NEW","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":241,"lineto":251,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n\n<p><code>version</code> should be set to GIT_FILTER_VERSION</p>\n\n<p><code>attributes</code> is a whitespace-separated list of attribute names to check for this filter (e.g. &quot;eol crlf text&quot;).  If the attribute name is bare, it will be simply loaded and passed to the <code>check</code> callback.  If it has a value (i.e. &quot;name=value&quot;), the attribute must match that value for the filter to be applied.</p>\n\n<p>The <code>initialize</code>, <code>shutdown</code>, <code>check</code>, <code>apply</code>, and <code>cleanup</code> callbacks are all documented above with the respective function pointer typedefs.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"attributes","comments":""},{"type":"git_filter_init_fn","name":"initialize","comments":""},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":""},{"type":"git_filter_check_fn","name":"check","comments":""},{"type":"git_filter_apply_fn","name":"apply","comments":""},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":""}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":70,"lineto":70,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":107,"lineto":127,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_bypath"],"needs":["git_checkout_index","git_cherry_pick_commit","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_repository_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":142,"lineto":147,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","unsigned int dev","unsigned int ino","unsigned int mode","unsigned int uid","unsigned int gid","git_off_t file_size","git_oid id","unsigned short flags","unsigned short flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":48,"lineto":65,"block":"git_index_time ctime\ngit_index_time mtime\nunsigned int dev\nunsigned int ino\nunsigned int mode\nunsigned int uid\nunsigned int gid\ngit_off_t file_size\ngit_oid id\nunsigned short flags\nunsigned short flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"unsigned int","name":"dev","comments":""},{"type":"unsigned int","name":"ino","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"unsigned int","name":"uid","comments":""},{"type":"unsigned int","name":"gid","comments":""},{"type":"git_off_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"unsigned short","name":"flags","comments":""},{"type":"unsigned short","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_bypath"],"needs":["git_index_add","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["git_time_t seconds","unsigned int nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"git_time_t seconds\nunsigned int nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"git_time_t","name":"seconds","comments":""},{"type":"unsigned int","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":130,"lineto":135,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":240,"lineto":269,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":79,"lineto":109,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_head",{"decl":"git_merge_head","type":"struct","value":"git_merge_head","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Merge heads, the input to merge ","comments":"","used":{"returns":[],"needs":["git_merge_head_free","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_head_id"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_merge_tree_flag_t",{"decl":["GIT_MERGE_TREE_FIND_RENAMES"],"type":"enum","file":"merge.h","line":66,"lineto":73,"block":"GIT_MERGE_TREE_FIND_RENAMES","tdef":"typedef","description":" Flags for `git_merge_tree` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_TREE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack","git_repository_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, size_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, size_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_read"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_stream_finalize_write","git_odb_stream_free"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, int, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, int, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_indexer_hash","git_merge_head_id","git_note_id","git_object_id","git_odb_object_id","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_head_from_fetchhead","git_merge_head_from_id","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_odb_exists","git_odb_foreach_cb","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_stream_finalize_write","git_oid_allocfmt","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tree_entry_byid","git_tree_lookup","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":212,"lineto":212,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":[],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object_lookup","git_object_lookup_bypath","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hashfile","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written","git_push_set_callbacks"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism"],"type":"struct","value":"git_push_options","file":"push.h","line":25,"lineto":37,"block":"unsigned int version\nunsigned int pb_parallelism","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."}],"used":{"returns":[],"needs":["git_push_init_options","git_push_set_options"]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":185,"lineto":190,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference from the refdb.  A refdb implementation\n must provide this function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb.  A refdb implementation may\n provide this function; if it is not provided, nothing will be done."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_branch_create","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_merge_head_from_ref","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":[],"needs":["git_reflog_append","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":[],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":453,"lineto":495,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":["git_remote_get_callbacks"],"needs":["git_remote_init_callbacks","git_remote_set_callbacks"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":441,"lineto":445,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":39,"lineto":49,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Remote head description, given out on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_blame_file","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_branch_create","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherry_pick","git_cherry_pick_commit","git_clone","git_clone_into","git_clone_local_into","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge_base","git_merge_commits","git_merge_file_from_index","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_trees","git_note_create","git_note_default_ref","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_packbuilder_new","git_pathspec_match_workdir","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_list","git_remote_load","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_set_head","git_repository_set_head_detached","git_repository_set_namespace","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_foreach","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_reload_all","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tree_entry_to_object","git_tree_lookup","git_treebuilder_write"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE"],"type":"enum","file":"repository.h","line":200,"lineto":207,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":222,"lineto":226,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":256,"lineto":265,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_branch_create","git_branch_move","git_clone_into","git_clone_local_into","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_note_create","git_note_remove","git_push_update_tips","git_reference_create","git_reference_create_matching","git_reference_rename","git_reference_set_target","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reflog_append","git_remote_fetch","git_remote_update_tips","git_repository_detach_head","git_repository_set_head","git_repository_set_head_detached","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":21,"lineto":38,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" \n\n git2/stash.h\n ","comments":"<p>@{</p>\n","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX"],"type":"enum","file":"status.h","line":135,"lineto":150,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":77,"lineto":81,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_IGNORED"],"type":"enum","file":"status.h","line":32,"lineto":48,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_IGNORED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384}],"used":{"returns":[],"needs":[]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":249,"lineto":249,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_update"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_save","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_RESET","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL","GIT_SUBMODULE_IGNORE_DEFAULT"],"type":"enum","file":"types.h","line":316,"lineto":325,"block":"GIT_SUBMODULE_IGNORE_RESET\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL\nGIT_SUBMODULE_IGNORE_DEFAULT","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_RESET: reset to the on-disk value. - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_RESET","comments":"<p>reset to on-disk value </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_ignore","git_submodule_set_ignore"],"needs":["git_submodule_set_ignore"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_RESET","GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":338,"lineto":344,"block":"GIT_SUBMODULE_RECURSE_RESET\nGIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_RESET - reset to the on-disk value * GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_RESET","comments":"","value":-1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":72,"lineto":87,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_RESET","GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":278,"lineto":287,"block":"GIT_SUBMODULE_UPDATE_RESET\nGIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_RESET: reset to the on-disk value. - GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_RESET","comments":"","value":-1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_set_update","git_submodule_update"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":382,"lineto":385,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}]],"prefix":"include/git2","groups":[["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get"]],["blame",["git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_free"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherry",["git_cherry_pick","git_cherry_pick_commit","git_cherry_pick_init_options"]],["clone",["git_clone","git_clone_init_options","git_clone_into","git_clone_local_into"]],["commit",["git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_free","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_find_global","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_string","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_refresh","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_has_username","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["diff",["git_diff_blobs","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_detach","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_descendant_of"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_opts","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge_base","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_head_free","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_head_id","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_create","git_note_default_ref","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack"]],["oid",["git_oid_allocfmt","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_add_refspec","git_push_finish","git_push_free","git_push_init_options","git_push_new","git_push_set_callbacks","git_push_set_options","git_push_status_foreach","git_push_unpack_ok","git_push_update_tips"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_check_cert","git_remote_clear_refspecs","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_callbacks","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_load","git_remote_name","git_remote_owner","git_remote_pushurl","git_remote_rename","git_remote_save","git_remote_set_autotag","git_remote_set_callbacks","git_remote_set_fetch_refspecs","git_remote_set_push_refspecs","git_remote_set_pushurl","git_remote_set_transport","git_remote_set_update_fetchhead","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_supported_url","git_remote_update_fetchhead","git_remote_update_tips","git_remote_url","git_remote_valid_url"]],["repository",["git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_set_head","git_repository_set_head_detached","git_repository_set_namespace","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_foreach"]],["status",["git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_reload_all","git_submodule_save","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["threads",["git_threads_init","git_threads_shutdown"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_register","git_transport_smart","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.21.1/add.html"],["blame.c","ex/v0.21.1/blame.html"],["cat-file.c","ex/v0.21.1/cat-file.html"],["common.c","ex/v0.21.1/common.html"],["diff.c","ex/v0.21.1/diff.html"],["for-each-ref.c","ex/v0.21.1/for-each-ref.html"],["general.c","ex/v0.21.1/general.html"],["init.c","ex/v0.21.1/init.html"],["log.c","ex/v0.21.1/log.html"],["network/clone.c","ex/v0.21.1/network/clone.html"],["network/common.c","ex/v0.21.1/network/common.html"],["network/fetch.c","ex/v0.21.1/network/fetch.html"],["network/git2.c","ex/v0.21.1/network/git2.html"],["network/index-pack.c","ex/v0.21.1/network/index-pack.html"],["network/ls-remote.c","ex/v0.21.1/network/ls-remote.html"],["rev-list.c","ex/v0.21.1/rev-list.html"],["rev-parse.c","ex/v0.21.1/rev-parse.html"],["showindex.c","ex/v0.21.1/showindex.html"],["status.c","ex/v0.21.1/status.html"],["tag.c","ex/v0.21.1/tag.html"]]}
\ No newline at end of file
+{"files":[{"file":"attr.h","functions":["git_attr_get","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":237},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_free"],"meta":{},"lines":208},{"file":"blob.h","functions":["git_blob_lookup","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_is_binary"],"meta":{},"lines":219},{"file":"branch.h","functions":["git_branch_create","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":242},{"file":"buffer.h","functions":["git_buf_free"],"meta":{},"lines":72},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":323},{"file":"cherrypick.h","functions":["git_cherry_pick_init_options","git_cherry_pick_commit","git_cherry_pick"],"meta":{},"lines":81},{"file":"clone.h","functions":["git_clone_init_options","git_clone","git_clone_into","git_clone_local_into"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_amend"],"meta":{},"lines":353},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":228},{"file":"config.h","functions":["git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_refresh","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_string","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_backend_foreach_match"],"meta":{},"lines":640},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_init_options","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_merge","git_diff_find_similar","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_get_stats","git_diff_stats_free","git_diff_format_email","git_diff_format_email_init_options"],"meta":{},"lines":1234},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_detach","giterr_set_str","giterr_set_oom"],"meta":{},"lines":149},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_free"],"meta":{},"lines":142},{"file":"graph.h","functions":["git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_clear","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_add_bypath","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":693},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_base","git_merge_head_from_ref","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_id","git_merge_head_free","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits"],"meta":{},"lines":512},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":54},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_default_ref","git_note_foreach"],"meta":{},"lines":198},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object_peel","git_object_dup"],"meta":{},"lines":230},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_exists","git_odb_refresh","git_odb_foreach","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate"],"meta":{},"lines":473},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromraw","git_oid_fmt","git_oid_pathfmt","git_oid_allocfmt","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":261},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":211},{"file":"patch.h","functions":["git_patch_from_blobs","git_patch_free","git_patch_get_delta","git_patch_print","git_patch_to_buf"],"meta":{},"lines":271},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free"],"meta":{},"lines":201},{"file":"push.h","functions":["git_push_init_options","git_push_transfer_progress","git_push_new","git_push_set_options","git_push_set_callbacks","git_push_add_refspec","git_push_update_tips","git_push_finish","git_push_unpack_ok","git_push_status_foreach","git_push_free"],"meta":{},"lines":177},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":734},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_load","git_remote_save","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_set_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_set_push_refspecs","git_remote_clear_refspecs","git_remote_connect","git_remote_download","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_update_tips","git_remote_fetch","git_remote_valid_url","git_remote_supported_url","git_remote_list","git_remote_check_cert","git_remote_set_transport","git_remote_init_callbacks","git_remote_set_callbacks","git_remote_get_callbacks","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_rename","git_remote_update_fetchhead","git_remote_set_update_fetchhead","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":639},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow"],"meta":{},"lines":712},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":81},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":286},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_cb","git_stash_foreach"],"meta":{},"lines":98},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":361},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_save","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_reload_all","git_submodule_status","git_submodule_location"],"meta":{},"lines":555},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":108},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":87},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":297},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":102},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":200},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":36},{"file":"tag.h","functions":["git_tag_lookup","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"threads.h","functions":["git_threads_init","git_threads_shutdown"],"meta":{},"lines":45},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_default_new","git_cred_acquire_cb","git_transport_init","git_transport_new","git_transport_register","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":537},{"file":"tree.h","functions":["git_tree_lookup","git_tree_free","git_tree_id","git_tree_owner","git_tree_entry_byname","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_create","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":408},{"file":"types.h","functions":["git_transfer_progress_cb"],"meta":{},"lines":344}],"functions":{"git_attr_get":{"type":"function","file":"attr.h","line":142,"lineto":147,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":206,"lineto":211,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":221,"lineto":222,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":234,"lineto":237,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":93,"lineto":95,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":138,"lineto":138,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":147,"lineto":149,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":158,"lineto":160,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"uint32_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, uint32_t lineno","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":173,"lineto":177,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_file-2"]}},"git_blame_free":{"type":"function","file":"blame.h","line":208,"lineto":208,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.21.1/general.html#git_blob_lookup-1"]}},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.21.1/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.21.1/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.21.1/general.html#git_blob_rawsize-3","ex/v0.21.1/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":124,"lineto":128,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer.  To keep the data detached from the blob, call <code>git_buf_grow</code> on the buffer with a <code>want_size</code> of 0 and the buffer will be reallocated to be detached from the blob.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":141,"lineto":141,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":153,"lineto":153,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":189,"lineto":194,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return    0. This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":56,"lineto":63,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog.\n If NULL, the default is \"Branch: created\"; if you want something more\n useful, provide a message."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_commit *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":75,"lineto":75,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":91,"lineto":94,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":104,"lineto":104,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":111,"lineto":111,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":132,"lineto":138,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":161,"lineto":165,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":182,"lineto":184,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":198,"lineto":200,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":212,"lineto":212,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":241,"lineto":242,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.21.1/diff.html#git_buf_free-1"],"tag.c":["ex/v0.21.1/tag.html#git_buf_free-1"]}},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":277,"lineto":279,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":291,"lineto":293,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":304,"lineto":307,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":320,"lineto":323,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherry_pick_init_options":{"type":"function","file":"cherrypick.h","line":44,"lineto":46,"args":[{"name":"opts","type":"git_cherry_pick_options *","comment":"the `git_cherry_pick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRY_PICK_OPTIONS_VERSION`"}],"argline":"git_cherry_pick_options *opts, unsigned int version","sig":"git_cherry_pick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherry_pick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRY_PICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherry"},"git_cherry_pick_commit":{"type":"function","file":"cherrypick.h","line":62,"lineto":68,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherry_pick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherry_pick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherry"},"git_cherry_pick":{"type":"function","file":"cherrypick.h","line":78,"lineto":81,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherry_pick_options","type":"const git_cherry_pick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherry_pick_options *cherry_pick_options","sig":"git_repository *::git_commit *::const git_cherry_pick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherry"},"git_clone_init_options":{"type":"function","file":"clone.h","line":126,"lineto":128,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":146,"lineto":150,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>This version handles the simple case. If you&#39;d like to create the repository or remote with non-default settings, you can create and configure them and then use <code>git_clone_into()</code>.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.21.1/network/clone.html#git_clone-1"]}},"git_clone_into":{"type":"function","file":"clone.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to use"},{"name":"remote","type":"git_remote *","comment":"the remote repository to clone from"},{"name":"co_opts","type":"const git_checkout_options *","comment":"options to use during checkout"},{"name":"branch","type":"const char *","comment":"the branch to checkout after the clone, pass NULL for the\n        remote's default branch"},{"name":"signature","type":"const git_signature *","comment":"The identity used when updating the reflog."}],"argline":"git_repository *repo, git_remote *remote, const git_checkout_options *co_opts, const char *branch, const git_signature *signature","sig":"git_repository *::git_remote *::const git_checkout_options *::const char *::const git_signature *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone into a repository</p>\n","comments":"<p>After creating the repository and remote and configuring them for paths and callbacks respectively, you can call this function to perform the clone operation and optionally checkout files.</p>\n","group":"clone"},"git_clone_local_into":{"type":"function","file":"clone.h","line":197,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to use"},{"name":"remote","type":"git_remote *","comment":"the remote repository to clone from"},{"name":"co_opts","type":"const git_checkout_options *","comment":"options to use during checkout"},{"name":"branch","type":"const char *","comment":"the branch to checkout after the clone, pass NULL for the\n        remote's default branch"},{"name":"link","type":"int","comment":"wether to use hardlinks instead of copying\n objects. This is only possible if both repositories are on the same\n filesystem."},{"name":"signature","type":"const git_signature *","comment":"the identity used when updating the reflog"}],"argline":"git_repository *repo, git_remote *remote, const git_checkout_options *co_opts, const char *branch, int link, const git_signature *signature","sig":"git_repository *::git_remote *::const git_checkout_options *::const char *::int::const git_signature *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Perform a local clone into a repository</p>\n","comments":"<p>A &quot;local clone&quot; bypasses any git-aware protocols and simply copies over the object database from the source repository. It is often faster than a git-aware clone, but no verification of the data is performed, and can copy over too much data.</p>\n","group":"clone"},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_lookup-5","ex/v0.21.1/general.html#git_commit_lookup-6","ex/v0.21.1/general.html#git_commit_lookup-7"],"log.c":["ex/v0.21.1/log.html#git_commit_lookup-1"]}},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_free-8","ex/v0.21.1/general.html#git_commit_free-9","ex/v0.21.1/general.html#git_commit_free-10","ex/v0.21.1/general.html#git_commit_free-11"],"log.c":["ex/v0.21.1/log.html#git_commit_free-2","ex/v0.21.1/log.html#git_commit_free-3","ex/v0.21.1/log.html#git_commit_free-4","ex/v0.21.1/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_id-12"],"log.c":["ex/v0.21.1/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.21.1/log.html#git_commit_owner-7","ex/v0.21.1/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_message-3","ex/v0.21.1/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.21.1/general.html#git_commit_message-13","ex/v0.21.1/general.html#git_commit_message-14","ex/v0.21.1/general.html#git_commit_message-15"],"log.c":["ex/v0.21.1/log.html#git_commit_message-9","ex/v0.21.1/log.html#git_commit_message-10"],"tag.c":["ex/v0.21.1/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":136,"lineto":136,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_time-16","ex/v0.21.1/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":144,"lineto":144,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":152,"lineto":152,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.21.1/general.html#git_commit_committer-18"],"log.c":["ex/v0.21.1/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":160,"lineto":160,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.21.1/general.html#git_commit_author-19","ex/v0.21.1/general.html#git_commit_author-20"],"log.c":["ex/v0.21.1/log.html#git_commit_author-12","ex/v0.21.1/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":168,"lineto":168,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":177,"lineto":177,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.21.1/log.html#git_commit_tree-14","ex/v0.21.1/log.html#git_commit_tree-15","ex/v0.21.1/log.html#git_commit_tree-16","ex/v0.21.1/log.html#git_commit_tree-17","ex/v0.21.1/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":187,"lineto":187,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":195,"lineto":195,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.21.1/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.21.1/log.html#git_commit_parentcount-19","ex/v0.21.1/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":205,"lineto":208,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.21.1/general.html#git_commit_parent-22"],"log.c":["ex/v0.21.1/log.html#git_commit_parent-21","ex/v0.21.1/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":219,"lineto":221,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.21.1/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":237,"lineto":240,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_amend":{"type":"function","file":"commit.h","line":345,"lineto":353,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":94,"lineto":94,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":124,"lineto":124,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":228,"lineto":228,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, or        &gt; `GIT_CONFIG_LEVEL_XDG`.  The search path is written to the `out`      &gt; buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be GIT_CONFIG_LEVEL_SYSTEM, GIT_CONFIG_LEVEL_GLOBAL,       &gt;   or GIT_CONFIG_LEVEL_XDG.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n</code></pre>\n","group":"libgit2"},"git_config_find_global":{"type":"function","file":"config.h","line":97,"lineto":97,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":126,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":138,"lineto":138,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":173,"lineto":177,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":192,"lineto":192,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND when the file doesn't exist\n or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_open_ondisk-23"]}},"git_config_open_level":{"type":"function","file":"config.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":243,"lineto":243,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_refresh":{"type":"function","file":"config.h","line":257,"lineto":257,"args":[{"name":"cfg","type":"git_config *","comment":"The configuration to refresh"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Reload changed config files</p>\n","comments":"<p>A config file may be changed on disk out from under the in-memory config object.  This function causes us to look for files that have been modified since we last loaded them and refresh the config with the latest information.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":264,"lineto":264,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":277,"lineto":280,"args":[{"name":"out","type":"const git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const git_config_entry **out, const git_config *cfg, const char *name","sig":"const git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>The git_config_entry is owned by the config and should not be freed by the user.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":294,"lineto":294,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_get_int32-24"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":308,"lineto":308,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":343,"lineto":343,"args":[{"name":"out","type":"const char **","comment":"pointer to the variable's value"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The string is owned by the variable and should not be freed by the user. The pointer will be valid until the next operation on this config object.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.21.1/general.html#git_config_get_string-25"]}},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":357,"lineto":357,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":368,"lineto":368,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":380,"lineto":380,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":387,"lineto":387,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":398,"lineto":398,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":409,"lineto":409,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":420,"lineto":420,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":434,"lineto":434,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":444,"lineto":444,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":453,"lineto":453,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":464,"lineto":464,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":482,"lineto":485,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":496,"lineto":496,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":508,"lineto":508,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":526,"lineto":530,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":597,"lineto":597,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":609,"lineto":609,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":621,"lineto":621,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":636,"lineto":640,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_diff_init_options":{"type":"function","file":"diff.h","line":398,"lineto":400,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":638,"lineto":640,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":654,"lineto":654,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_free-2"],"log.c":["ex/v0.21.1/log.html#git_diff_free-24","ex/v0.21.1/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":672,"lineto":677,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.21.1/log.html#git_diff_tree_to_tree-26","ex/v0.21.1/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":698,"lineto":703,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":725,"lineto":729,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":754,"lineto":758,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":773,"lineto":777,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_merge":{"type":"function","file":"diff.h","line":792,"lineto":794,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":808,"lineto":810,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_find_similar-8"]}},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":870,"lineto":870,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":897,"lineto":902,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":915,"lineto":915,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":940,"lineto":944,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_print-9"],"log.c":["ex/v0.21.1/log.html#git_diff_print-28"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":980,"lineto":989,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1094,"lineto":1096,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumlate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1146,"lineto":1146,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.21.1/diff.html#git_diff_stats_free-11"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1195,"lineto":1198,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1232,"lineto":1234,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":98,"lineto":98,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.21.1/general.html#giterr_last-26"],"network/clone.c":["ex/v0.21.1/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.21.1/network/git2.html#giterr_last-1","ex/v0.21.1/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":103,"lineto":103,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_detach":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[{"name":"cpy","type":"git_error *","comment":null}],"argline":"git_error *cpy","sig":"git_error *","return":{"type":"int","comment":null},"description":"<p>Get the last error data and clear it.</p>\n","comments":"<p>This copies the last error into the given <code>git_error</code> struct and returns 0 if the copy was successful, leaving the error cleared as if <code>giterr_clear</code> had been called.</p>\n\n<p>If there was no existing error in the library, -1 will be returned and the contents of <code>cpy</code> will be left unmodified.</p>\n","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":138,"lineto":138,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n\n<p>NOTE: Passing the <code>error_class</code> as GITERR_OS has a special behavior: we attempt to append the system default error message for the last OS error that occurred and then clear the last error.  The specific implementation of looking up and clearing this last OS error will vary by platform.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":149,"lineto":149,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":87,"lineto":93,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"options","type":"uint32_t","comment":"Combination of `git_filter_opt_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":115,"lineto":118,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":123,"lineto":127,"args":[{"name":"out","type":"git_buf *","comment":null},{"name":"filters","type":"git_filter_list *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"path","type":"const char *","comment":null}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":132,"lineto":135,"args":[{"name":"out","type":"git_buf *","comment":null},{"name":"filters","type":"git_filter_list *","comment":null},{"name":"blob","type":"git_blob *","comment":null}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":142,"lineto":142,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":181,"lineto":181,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":194,"lineto":194,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":201,"lineto":201,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.21.1/general.html#git_index_free-27"],"init.c":["ex/v0.21.1/init.html#git_index_free-1"]}},"git_index_owner":{"type":"function","file":"index.h","line":209,"lineto":209,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":217,"lineto":217,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":230,"lineto":230,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":249,"lineto":249,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":258,"lineto":258,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":266,"lineto":266,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":298,"lineto":298,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.21.1/init.html#git_index_write_tree-2"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":315,"lineto":315,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_clear":{"type":"function","file":"index.h","line":345,"lineto":345,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_bypath":{"type":"function","file":"index.h","line":373,"lineto":374,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":384,"lineto":384,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":394,"lineto":395,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":411,"lineto":411,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":423,"lineto":423,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":454,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":517,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":539,"lineto":543,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":568,"lineto":572,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":607,"lineto":611,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":627,"lineto":632,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":641,"lineto":641,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":649,"lineto":649,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":656,"lineto":656,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":667,"lineto":669,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":681,"lineto":685,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":692,"lineto":693,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_commit-2"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_hash-3"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_indexer_free-4"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":58,"lineto":60,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":165,"lineto":167,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":233,"lineto":235,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":317,"lineto":321,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.21.1/log.html#git_merge_base-29"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_merge_base-1"]}},"git_merge_head_from_ref":{"type":"function","file":"merge.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const git_reference *ref","sig":"git_merge_head **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given reference.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_from_fetchhead":{"type":"function","file":"merge.h","line":378,"lineto":383,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"oid","type":"const git_oid *","comment":"the commit object id to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *oid","sig":"git_merge_head **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given fetch head data.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_from_id":{"type":"function","file":"merge.h","line":394,"lineto":397,"args":[{"name":"out","type":"git_merge_head **","comment":"pointer to store the git_merge_head result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to use as a merge input"}],"argline":"git_merge_head **out, git_repository *repo, const git_oid *id","sig":"git_merge_head **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_merge_head</code> from the given commit id.  The resulting\n git_merge_head must be freed with <code>git_merge_head_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_head_id":{"type":"function","file":"merge.h","line":405,"lineto":406,"args":[{"name":"head","type":"const git_merge_head *","comment":"the given merge head"}],"argline":"const git_merge_head *head","sig":"const git_merge_head *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_merge_head</code> refers to.</p>\n","comments":"","group":"merge"},"git_merge_head_free":{"type":"function","file":"merge.h","line":413,"lineto":414,"args":[{"name":"head","type":"git_merge_head *","comment":"merge head to free"}],"argline":"git_merge_head *head","sig":"git_merge_head *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_head</code>.</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":432,"lineto":437,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":453,"lineto":459,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":466,"lineto":466,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":484,"lineto":490,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":507,"lineto":512,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":74,"lineto":77,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"<p>The notes must not be freed manually by the user.</p>\n","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":105,"lineto":105,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":114,"lineto":114,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":131,"lineto":139,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *notes_ref, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const git_signature *::const git_signature *::const char *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":154,"lineto":159,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":166,"lineto":166,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_default_ref":{"type":"function","file":"notes.h","line":176,"lineto":176,"args":[{"name":"out","type":"const char **","comment":"Pointer to the default notes reference"},{"name":"repo","type":"git_repository *","comment":"The Git repository"}],"argline":"const char **out, git_repository *repo","sig":"const char **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the default notes reference for a repository</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":194,"lineto":198,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.21.1/log.html#git_object_lookup-30"]}},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.21.1/blame.html#git_object_id-8","ex/v0.21.1/blame.html#git_object_id-9","ex/v0.21.1/blame.html#git_object_id-10","ex/v0.21.1/blame.html#git_object_id-11"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_id-10","ex/v0.21.1/cat-file.html#git_object_id-11"],"log.c":["ex/v0.21.1/log.html#git_object_id-31","ex/v0.21.1/log.html#git_object_id-32","ex/v0.21.1/log.html#git_object_id-33","ex/v0.21.1/log.html#git_object_id-34"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_object_id-2","ex/v0.21.1/rev-parse.html#git_object_id-3","ex/v0.21.1/rev-parse.html#git_object_id-4","ex/v0.21.1/rev-parse.html#git_object_id-5","ex/v0.21.1/rev-parse.html#git_object_id-6"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.21.1/tag.html#git_object_short_id-3"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_type-12","ex/v0.21.1/cat-file.html#git_object_type-13","ex/v0.21.1/cat-file.html#git_object_type-14"],"tag.c":["ex/v0.21.1/tag.html#git_object_type-4"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.21.1/blame.html#git_object_free-12","ex/v0.21.1/blame.html#git_object_free-13","ex/v0.21.1/blame.html#git_object_free-14","ex/v0.21.1/blame.html#git_object_free-15"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_free-15"],"general.c":["ex/v0.21.1/general.html#git_object_free-28"],"log.c":["ex/v0.21.1/log.html#git_object_free-35"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_object_free-7","ex/v0.21.1/rev-parse.html#git_object_free-8","ex/v0.21.1/rev-parse.html#git_object_free-9"],"tag.c":["ex/v0.21.1/tag.html#git_object_free-5","ex/v0.21.1/tag.html#git_object_free-6","ex/v0.21.1/tag.html#git_object_free-7","ex/v0.21.1/tag.html#git_object_free-8"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_object_type2string-16","ex/v0.21.1/cat-file.html#git_object_type2string-17","ex/v0.21.1/cat-file.html#git_object_type2string-18","ex/v0.21.1/cat-file.html#git_object_type2string-19"],"general.c":["ex/v0.21.1/general.html#git_object_type2string-29"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":218,"lineto":221,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes (e.g. a tag will be chased until the referenced object is no longer a tag).</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":230,"lineto":230,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_free-20"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_read-21"],"general.c":["ex/v0.21.1/general.html#git_odb_read-30"]}},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_odb_object_free-22"],"general.c":["ex/v0.21.1/general.html#git_odb_object_free-31"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.21.1/general.html#git_odb_object_data-32"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.21.1/general.html#git_odb_object_type-33"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.21.1/general.html#git_oid_fromstr-34","ex/v0.21.1/general.html#git_oid_fromstr-35","ex/v0.21.1/general.html#git_oid_fromstr-36","ex/v0.21.1/general.html#git_oid_fromstr-37","ex/v0.21.1/general.html#git_oid_fromstr-38","ex/v0.21.1/general.html#git_oid_fromstr-39","ex/v0.21.1/general.html#git_oid_fromstr-40","ex/v0.21.1/general.html#git_oid_fromstr-41"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.21.1/general.html#git_oid_fmt-42","ex/v0.21.1/general.html#git_oid_fmt-43","ex/v0.21.1/general.html#git_oid_fmt-44","ex/v0.21.1/general.html#git_oid_fmt-45","ex/v0.21.1/general.html#git_oid_fmt-46"],"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_oid_fmt-1","ex/v0.21.1/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.21.1/network/index-pack.html#git_oid_fmt-5"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_allocfmt":{"type":"function","file":"oid.h","line":125,"lineto":125,"args":[{"name":"id","type":"const git_oid *","comment":"the oid structure to format"}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string; NULL if memory is exhausted. Caller must\n\t\t\tdeallocate the string with git__free()."},"description":"<p>Format a git_oid into a newly allocated c-string.</p>\n","comments":"","group":"oid"},"git_oid_cpy":{"type":"function","file":"oid.h","line":152,"lineto":152,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.21.1/blame.html#git_oid_cpy-16","ex/v0.21.1/blame.html#git_oid_cpy-17","ex/v0.21.1/blame.html#git_oid_cpy-18"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":161,"lineto":161,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":170,"lineto":170,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":190,"lineto":190,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":200,"lineto":200,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":207,"lineto":207,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.21.1/blame.html#git_oid_iszero-19"],"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":254,"lineto":254,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":261,"lineto":261,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":139,"lineto":144,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":154,"lineto":154,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":166,"lineto":166,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":174,"lineto":174,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":182,"lineto":182,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":201,"lineto":204,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":211,"lineto":211,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":74,"lineto":80,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":139,"lineto":139,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":144,"lineto":144,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch</p>\n","comments":"","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":257,"lineto":260,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":269,"lineto":271,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_new-36"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_free-37"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.21.1/log.html#git_pathspec_match_tree-38"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_push_init_options":{"type":"function","file":"push.h","line":51,"lineto":53,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_push_new":{"type":"function","file":"push.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_push **","comment":"New push object"},{"name":"remote","type":"git_remote *","comment":"Remote instance"}],"argline":"git_push **out, git_remote *remote","sig":"git_push **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new push object</p>\n","comments":"","group":"push"},"git_push_set_options":{"type":"function","file":"push.h","line":80,"lineto":82,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"opts","type":"const git_push_options *","comment":"The options to set on the push object"}],"argline":"git_push *push, const git_push_options *opts","sig":"git_push *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set options on a push object</p>\n","comments":"","group":"push"},"git_push_set_callbacks":{"type":"function","file":"push.h","line":98,"lineto":103,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"pack_progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"pack_progress_cb_payload","type":"void *","comment":"Payload for the pack progress callback."},{"name":"transfer_progress_cb","type":"git_push_transfer_progress","comment":"Function to call with progress information during\n the upload portion of a push. Be aware that this is called inline with\n pack building operations, so performance may be affected."},{"name":"transfer_progress_cb_payload","type":"void *","comment":"Payload for the network progress callback."}],"argline":"git_push *push, git_packbuilder_progress pack_progress_cb, void *pack_progress_cb_payload, git_push_transfer_progress transfer_progress_cb, void *transfer_progress_cb_payload","sig":"git_push *::git_packbuilder_progress::void *::git_push_transfer_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a push</p>\n","comments":"","group":"push"},"git_push_add_refspec":{"type":"function","file":"push.h","line":113,"lineto":113,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"refspec","type":"const char *","comment":"Refspec string"}],"argline":"git_push *push, const char *refspec","sig":"git_push *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a refspec to be pushed</p>\n","comments":"","group":"push"},"git_push_update_tips":{"type":"function","file":"push.h","line":125,"lineto":128,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n                       default is \"update by push\"."}],"argline":"git_push *push, const git_signature *signature, const char *reflog_message","sig":"git_push *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update remote tips after a push</p>\n","comments":"","group":"push"},"git_push_finish":{"type":"function","file":"push.h","line":142,"lineto":142,"args":[{"name":"push","type":"git_push *","comment":"The push object"}],"argline":"git_push *push","sig":"git_push *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Actually push all given refspecs</p>\n","comments":"<p>Note: To check if the push was successful (i.e. all remote references have been updated as requested), you need to call both <code>git_push_unpack_ok</code> and <code>git_push_status_foreach</code>. The remote repository might have refused to update some or all of the references.</p>\n","group":"push"},"git_push_unpack_ok":{"type":"function","file":"push.h","line":151,"lineto":151,"args":[{"name":"push","type":"const git_push *","comment":"The push object"}],"argline":"const git_push *push","sig":"const git_push *","return":{"type":"int","comment":" true if remote side successfully unpacked, false otherwise"},"description":"<p>Check if remote side successfully unpacked</p>\n","comments":"","group":"push"},"git_push_status_foreach":{"type":"function","file":"push.h","line":168,"lineto":170,"args":[{"name":"push","type":"git_push *","comment":"The push object"},{"name":"cb","type":"int (*)(const char *, const char *, void *)","comment":"The callback to call on each object"},{"name":"data","type":"void *","comment":null}],"argline":"git_push *push, int (*)(const char *, const char *, void *) cb, void *data","sig":"git_push *::int (*)(const char *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Invoke callback `cb&#39; on each status entry</p>\n","comments":"<p>For each of the updated references, we receive a status report in the form of <code>ok refs/heads/master</code> or <code>ng refs/heads/master &lt;msg&gt;</code>. <code>msg != NULL</code> means the reference has not been updated for the given reason.</p>\n\n<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"push"},"git_push_free":{"type":"function","file":"push.h","line":177,"lineto":177,"args":[{"name":"push","type":"git_push *","comment":"The push object"}],"argline":"git_push *push","sig":"git_push *","return":{"type":"void","comment":null},"description":"<p>Free the given push object</p>\n","comments":"","group":"push"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_lookup-47"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is refering to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":110,"lineto":110,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":185,"lineto":185,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":229,"lineto":229,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const git_signature *signature, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":244,"lineto":244,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_target-48"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":255,"lineto":255,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":265,"lineto":265,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_symbolic_target-49"]}},"git_reference_type":{"type":"function","file":"refs.h","line":275,"lineto":275,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_type-50"]}},"git_reference_name":{"type":"function","file":"refs.h","line":285,"lineto":285,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":303,"lineto":303,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":311,"lineto":311,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":334,"lineto":339,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The signature and message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":356,"lineto":361,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":387,"lineto":393,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const git_signature *signature, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":408,"lineto":408,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":419,"lineto":419,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":433,"lineto":433,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.21.1/general.html#git_reference_list-51"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":451,"lineto":454,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":469,"lineto":472,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":479,"lineto":479,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.21.1/status.html#git_reference_free-1"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":488,"lineto":490,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":499,"lineto":501,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":512,"lineto":515,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":524,"lineto":524,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":537,"lineto":537,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":544,"lineto":544,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":564,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":578,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":630,"lineto":630,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":701,"lineto":704,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":720,"lineto":720,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":734,"lineto":734,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.21.1/status.html#git_reference_shorthand-2"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.  This\n calls git_remote_save before returning.</p>\n","comments":"","group":"remote"},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":57,"lineto":62,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.  This\n calls git_remote_save before returning.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":80,"lineto":84,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"},{"name":"fetch","type":"const char *","comment":"the fetch refspec to use for this remote."}],"argline":"git_remote **out, git_repository *repo, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url and refspec in memory. You can use this when you have a URL instead of a remote&#39;s name.  Note that anonymous remotes cannot be converted to persisted remotes.</p>\n\n<p>The name, when provided, will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_load":{"type":"function","file":"remote.h","line":97,"lineto":97,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_load-5"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_load-3"]}},"git_remote_save":{"type":"function","file":"remote.h","line":108,"lineto":108,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to save to config"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code"},"description":"<p>Save a remote to its repository&#39;s configuration</p>\n","comments":"<p>One can&#39;t save a in-memory remote. Doing so will result in a GIT_EINVALIDSPEC being returned.</p>\n","group":"remote"},"git_remote_dup":{"type":"function","file":"remote.h","line":120,"lineto":120,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":128,"lineto":128,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":136,"lineto":136,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":144,"lineto":144,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"","group":"remote"},"git_remote_pushurl":{"type":"function","file":"remote.h","line":152,"lineto":152,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"","group":"remote"},"git_remote_set_url":{"type":"function","file":"remote.h","line":163,"lineto":163,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_remote *remote, const char *url","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url</p>\n","comments":"<p>Existing connections will not be updated.</p>\n","group":"remote"},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":174,"lineto":174,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"url","type":"const char *","comment":"the url to set or NULL to clear the pushurl"}],"argline":"git_remote *remote, const char *url","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url for pushing</p>\n","comments":"<p>Existing connections will not be updated.</p>\n","group":"remote"},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":186,"lineto":186,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_remote *remote, const char *refspec","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Add a fetch refspec to the remote</p>\n","comments":"<p>Convenience function for adding a single fetch refspec to the current list in the remote.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":197,"lineto":197,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_set_fetch_refspecs":{"type":"function","file":"remote.h","line":207,"lineto":207,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to modify"},{"name":"array","type":"git_strarray *","comment":"the new list of fetch resfpecs"}],"argline":"git_remote *remote, git_strarray *array","sig":"git_remote *::git_strarray *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The contents of the string array are copied.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":219,"lineto":219,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_remote *remote, const char *refspec","sig":"git_remote *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Add a push refspec to the remote</p>\n","comments":"<p>Convenience function for adding a single push refspec to the current list in the remote.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":230,"lineto":230,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_set_push_refspecs":{"type":"function","file":"remote.h","line":240,"lineto":240,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to modify"},{"name":"array","type":"git_strarray *","comment":"the new list of push resfpecs"}],"argline":"git_remote *remote, git_strarray *array","sig":"git_remote *::git_strarray *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s list of push refspecs</p>\n","comments":"<p>The contents of the string array are copied.</p>\n","group":"remote"},"git_remote_clear_refspecs":{"type":"function","file":"remote.h","line":249,"lineto":249,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Clear the refspecs</p>\n","comments":"<p>Remove all configured fetch and push refspecs from the remote.</p>\n","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"}],"argline":"git_remote *remote, git_direction direction","sig":"git_remote *::git_direction","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_connect-6"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_download":{"type":"function","file":"remote.h","line":311,"lineto":311,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_download-7"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":322,"lineto":322,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":332,"lineto":332,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":342,"lineto":342,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote and free the underlying transport.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_disconnect-8"]}},"git_remote_free":{"type":"function","file":"remote.h","line":352,"lineto":352,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_free-9","ex/v0.21.1/network/fetch.html#git_remote_free-10"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_free-5"]}},"git_remote_update_tips":{"type":"function","file":"remote.h","line":364,"lineto":367,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n                       default is \"fetch \n<name\n>\", where \n<name\n> is the name of\n                       the remote (or its url, for in-memory remotes)."}],"argline":"git_remote *remote, const git_signature *signature, const char *reflog_message","sig":"git_remote *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_update_tips-11"]}},"git_remote_fetch":{"type":"function","file":"remote.h","line":381,"lineto":384,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"signature","type":"const git_signature *","comment":"The identity to use when updating reflogs"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_signature *signature, const char *reflog_message","sig":"git_remote *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote"},"git_remote_valid_url":{"type":"function","file":"remote.h","line":392,"lineto":392,"args":[{"name":"url","type":"const char *","comment":"the url to check"}],"argline":"const char *url","sig":"const char *","return":{"type":"int","comment":" 1 if the url is valid, 0 otherwise"},"description":"<p>Return whether a string is a valid remote URL</p>\n","comments":"","group":"remote"},"git_remote_supported_url":{"type":"function","file":"remote.h","line":400,"lineto":400,"args":[{"name":"url","type":"const char *","comment":"the url to check"}],"argline":"const char *url","sig":"const char *","return":{"type":"int","comment":" 1 if the url is supported, 0 otherwise"},"description":"<p>Return whether the passed URL is supported by this version of the library.</p>\n","comments":"","group":"remote"},"git_remote_list":{"type":"function","file":"remote.h","line":411,"lineto":411,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote"},"git_remote_check_cert":{"type":"function","file":"remote.h","line":419,"lineto":419,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"check","type":"int","comment":"whether to check the server's certificate (defaults to yes)"}],"argline":"git_remote *remote, int check","sig":"git_remote *::int","return":{"type":"void","comment":null},"description":"<p>Choose whether to check the server&#39;s certificate (applies to HTTPS only)</p>\n","comments":"","group":"remote"},"git_remote_set_transport":{"type":"function","file":"remote.h","line":433,"lineto":435,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"transport","type":"git_transport *","comment":"the transport object for the remote to use"}],"argline":"git_remote *remote, git_transport *transport","sig":"git_remote *::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets a custom transport for the remote. The caller can use this function\n to bypass the automatic discovery of a transport by URL scheme (i.e.\n http://, https://, git://) and supply their own transport to be used\n instead. After providing the transport to a remote using this function,\n the transport object belongs exclusively to that remote, and the remote will\n free it when it is freed with git_remote_free.</p>\n","comments":"","group":"remote"},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":508,"lineto":510,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_remote_set_callbacks":{"type":"function","file":"remote.h","line":522,"lineto":522,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"a pointer to the user's callback settings"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a remote</p>\n","comments":"<p>Note that the remote keeps its own copy of the data and you need to call this function again if you want to change the callbacks.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_set_callbacks-12"],"network/ls-remote.c":["ex/v0.21.1/network/ls-remote.html#git_remote_set_callbacks-6"]}},"git_remote_get_callbacks":{"type":"function","file":"remote.h","line":533,"lineto":533,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to query"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_remote_callbacks *","comment":" a pointer to the callbacks structure"},"description":"<p>Retrieve the current callback structure</p>\n","comments":"<p>This provides read access to the callbacks structure as the remote sees it.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":538,"lineto":538,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.21.1/network/fetch.html#git_remote_stats-13"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":552,"lineto":552,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":560,"lineto":562,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"value","type":"git_remote_autotag_option_t","comment":"a GIT_REMOTE_DOWNLOAD_TAGS value"}],"argline":"git_remote *remote, git_remote_autotag_option_t value","sig":"git_remote *::git_remote_autotag_option_t","return":{"type":"void","comment":null},"description":"<p>Set the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":582,"lineto":585,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on succesful return."},{"name":"remote","type":"git_remote *","comment":"the remote to rename"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_remote *remote, const char *new_name","sig":"git_strarray *::git_remote *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>A temporary in-memory remote cannot be given a name with this method.</p>\n","group":"remote"},"git_remote_update_fetchhead":{"type":"function","file":"remote.h","line":593,"lineto":593,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to query"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" the update FETCH_HEAD setting"},"description":"<p>Retrieve the update FETCH_HEAD setting.</p>\n","comments":"","group":"remote"},"git_remote_set_update_fetchhead":{"type":"function","file":"remote.h","line":602,"lineto":602,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to configure"},{"name":"value","type":"int","comment":"0 to disable updating FETCH_HEAD"}],"argline":"git_remote *remote, int value","sig":"git_remote *::int","return":{"type":"void","comment":null},"description":"<p>Sets the update FETCH_HEAD setting.  By default, FETCH_HEAD will be\n updated on every fetch.  Set to 0 to disable.</p>\n","comments":"","group":"remote"},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":610,"lineto":610,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":621,"lineto":621,"args":[{"name":"remote","type":"git_remote *","comment":"A valid remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote"},"git_remote_default_branch":{"type":"function","file":"remote.h","line":639,"lineto":639,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.21.1/general.html#git_repository_open-52"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_repository_open-3"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository"},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.21.1/blame.html#git_repository_open_ext-20"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_open_ext-23"],"diff.c":["ex/v0.21.1/diff.html#git_repository_open_ext-12"],"log.c":["ex/v0.21.1/log.html#git_repository_open_ext-39","ex/v0.21.1/log.html#git_repository_open_ext-40"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_repository_open_ext-10"],"status.c":["ex/v0.21.1/status.html#git_repository_open_ext-3"],"tag.c":["ex/v0.21.1/tag.html#git_repository_open_ext-9"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.21.1/blame.html#git_repository_free-21"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_free-24"],"diff.c":["ex/v0.21.1/diff.html#git_repository_free-13"],"general.c":["ex/v0.21.1/general.html#git_repository_free-53"],"init.c":["ex/v0.21.1/init.html#git_repository_free-3"],"log.c":["ex/v0.21.1/log.html#git_repository_free-41"],"network/clone.c":["ex/v0.21.1/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_repository_free-4"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_repository_free-11"],"status.c":["ex/v0.21.1/status.html#git_repository_free-4"],"tag.c":["ex/v0.21.1/tag.html#git_repository_free-10"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_init-4"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":278,"lineto":280,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":295,"lineto":298,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_init_ext-5"]}},"git_repository_head":{"type":"function","file":"repository.h","line":313,"lineto":313,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.21.1/status.html#git_repository_head-5"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":325,"lineto":325,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":337,"lineto":337,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":349,"lineto":349,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":360,"lineto":360,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_path-6"],"status.c":["ex/v0.21.1/status.html#git_repository_path-6"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.21.1/init.html#git_repository_workdir-7"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":390,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":399,"lineto":399,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.21.1/status.html#git_repository_is_bare-7"]}},"git_repository_config":{"type":"function","file":"repository.h","line":415,"lineto":415,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":431,"lineto":431,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":447,"lineto":447,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_repository_odb-25"],"general.c":["ex/v0.21.1/general.html#git_repository_odb-54"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":463,"lineto":463,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":479,"lineto":479,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.21.1/general.html#git_repository_index-55"],"init.c":["ex/v0.21.1/init.html#git_repository_index-8"]}},"git_repository_message":{"type":"function","file":"repository.h","line":497,"lineto":497,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":504,"lineto":504,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":513,"lineto":513,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":532,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":552,"lineto":555,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":580,"lineto":585,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":607,"lineto":611,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const char *refname, const git_signature *signature, const char *log_message","sig":"git_repository *::const char *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":631,"lineto":635,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const git_oid *commitish, const git_signature *signature, const char *log_message","sig":"git_repository *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":656,"lineto":659,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"signature","type":"const git_signature *","comment":"The identity that will used to populate the reflog entry"},{"name":"reflog_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_repository *repo, const git_signature *signature, const char *reflog_message","sig":"git_repository *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":681,"lineto":681,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":695,"lineto":695,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":703,"lineto":703,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":712,"lineto":712,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_revert_init_options":{"type":"function","file":"revert.h","line":44,"lineto":46,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":62,"lineto":68,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":78,"lineto":81,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.21.1/blame.html#git_revparse_single-22"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_revparse_single-26"],"log.c":["ex/v0.21.1/log.html#git_revparse_single-42"],"tag.c":["ex/v0.21.1/tag.html#git_revparse_single-11","ex/v0.21.1/tag.html#git_revparse_single-12","ex/v0.21.1/tag.html#git_revparse_single-13","ex/v0.21.1/tag.html#git_revparse_single-14"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.21.1/blame.html#git_revparse-23"],"log.c":["ex/v0.21.1/log.html#git_revparse-43"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_revparse-12","ex/v0.21.1/rev-parse.html#git_revparse-13"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_new-56"],"log.c":["ex/v0.21.1/log.html#git_revwalk_new-44","ex/v0.21.1/log.html#git_revwalk_new-45"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":85,"lineto":85,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":102,"lineto":102,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit to start traversal from.</p>\n","comments":"<p>The given OID must belong to a committish on the walked repository.</p>\n\n<p>The given commit will be used as one of the roots when starting the revision walk. At least one commit must be pushed onto the walker before a walk can be started.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_push-57"],"log.c":["ex/v0.21.1/log.html#git_revwalk_push-46"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":120,"lineto":120,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":128,"lineto":128,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.21.1/log.html#git_revwalk_push_head-47"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":143,"lineto":143,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given OID must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.21.1/log.html#git_revwalk_hide-48"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":162,"lineto":162,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":170,"lineto":170,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":181,"lineto":181,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":192,"lineto":192,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":212,"lineto":212,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_next-58"],"log.c":["ex/v0.21.1/log.html#git_revwalk_next-49"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":223,"lineto":223,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_sorting-59"],"log.c":["ex/v0.21.1/log.html#git_revwalk_sorting-50","ex/v0.21.1/log.html#git_revwalk_sorting-51"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":238,"lineto":238,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":253,"lineto":253,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.21.1/general.html#git_revwalk_free-60"],"log.c":["ex/v0.21.1/log.html#git_revwalk_free-52"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":262,"lineto":262,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":283,"lineto":286,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.21.1/general.html#git_signature_new-61","ex/v0.21.1/general.html#git_signature_new-62"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.21.1/init.html#git_signature_default-9"],"tag.c":["ex/v0.21.1/tag.html#git_signature_default-15"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.21.1/init.html#git_signature_free-10"],"tag.c":["ex/v0.21.1/tag.html#git_signature_free-16"]}},"git_stash_foreach":{"type":"function","file":"stash.h","line":95,"lineto":98,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":191,"lineto":193,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":231,"lineto":234,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_foreach-8"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":255,"lineto":259,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_foreach_ext-9"]}},"git_status_file":{"type":"function","file":"status.h","line":286,"lineto":289,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to retrieve status for relative to the repo workdir"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":304,"lineto":307,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_list_new-10","ex/v0.21.1/status.html#git_status_list_new-11"]}},"git_status_list_free":{"type":"function","file":"status.h","line":339,"lineto":340,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.21.1/status.html#git_status_list_free-12"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":358,"lineto":361,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.21.1/general.html#git_strarray_free-63"],"tag.c":["ex/v0.21.1/tag.html#git_strarray_free-17"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":135,"lineto":138,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_lookup-13"]}},"git_submodule_free":{"type":"function","file":"submodule.h","line":145,"lineto":145,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_free-14"]}},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":165,"lineto":168,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"int (*)(git_submodule *, const char *, void *)","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, int (*)(git_submodule *, const char *, void *) callback, void *payload","sig":"git_repository *::int (*)(git_submodule *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as decribed therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_foreach-15"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":195,"lineto":200,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":212,"lineto":212,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":224,"lineto":226,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_save":{"type":"function","file":"submodule.h","line":240,"lineto":240,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Write submodule settings to .gitmodules file.</p>\n","comments":"<p>This commits any in-memory changes to the submodule to the gitmodules file on disk.  You may also be interested in <code>git_submodule_init()</code> which writes submodule info to &quot;.git/config&quot; (which is better for local changes to submodule settings) and/or <code>git_submodule_sync()</code> which writes settings about remotes to the actual submodule repository.</p>\n","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":253,"lineto":253,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":261,"lineto":261,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_name-16"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":272,"lineto":272,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_path-17"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":280,"lineto":280,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":314,"lineto":314,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to the submodule object"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_submodule *submodule, const char *url","sig":"git_submodule *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule.</p>\n","comments":"<p>This sets the URL in memory for the submodule. This will be used for any following submodule actions while this submodule data is in memory.</p>\n\n<p>After calling this, you may wish to call <code>git_submodule_save()</code> to write the changes back to the &quot;.gitmodules&quot; file and <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":322,"lineto":322,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":330,"lineto":330,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":343,"lineto":343,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":371,"lineto":372,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n\n<p>plus the special <strong>GIT_SUBMODULE_IGNORE_RESET</strong> which can be used with <code>git_submodule_set_ignore()</code> to revert to the on-disk setting.</p>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":390,"lineto":392,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to update"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_submodule *submodule, git_submodule_ignore_t ignore","sig":"git_submodule *::git_submodule_ignore_t","return":{"type":"git_submodule_ignore_t","comment":" old value for ignore"},"description":"<p>Set the ignore rule for the submodule.</p>\n","comments":"<p>This sets the in-memory ignore rule for the submodule which will control the behavior of <code>git_submodule_status()</code>.</p>\n\n<p>To make changes persistent, call <code>git_submodule_save()</code> to write the value to disk (in the &quot;.gitmodules&quot; and &quot;.git/config&quot; files).</p>\n\n<p>Call with <code>GIT_SUBMODULE_IGNORE_RESET</code> or call <code>git_submodule_reload()</code> to revert the in-memory rule to the value that is on disk.</p>\n","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":406,"lineto":407,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code> plus the <code>GIT_SUBMODULE_UPDATE_RESET</code> which can be used to revert to the on-disk setting.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":425,"lineto":427,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to update"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_submodule *submodule, git_submodule_update_t update","sig":"git_submodule *::git_submodule_update_t","return":{"type":"git_submodule_update_t","comment":" old value for update"},"description":"<p>Set the update rule for the submodule.</p>\n","comments":"<p>The initial value comes from the &quot;.git/config&quot; setting of <code>submodule.$name.update</code> for this submodule (which is initialized from the &quot;.gitmodules&quot; file).  Using this function sets the update rule in memory for the submodule.  Call <code>git_submodule_save()</code> to write out the new update rule.</p>\n\n<p>Calling this again with GIT_SUBMODULE_UPDATE_RESET or calling <code>git_submodule_reload()</code> will revert the rule to the on disk value.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":440,"lineto":441,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":454,"lineto":456,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to modify"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_submodule *submodule, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_submodule *::git_submodule_recurse_t","return":{"type":"git_submodule_recurse_t","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This sets the submodule.<name>.fetchRecurseSubmodules value for the submodule.  You should call <code>git_submodule_save()</code> if you want to persist the new value.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":471,"lineto":471,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":481,"lineto":481,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":495,"lineto":497,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":509,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_reload_all":{"type":"function","file":"submodule.h","line":520,"lineto":520,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to reload submodule data for"},{"name":"force","type":"int","comment":"Force full reload even if the data doesn't seem out of date"}],"argline":"git_repository *repo, int force","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread all submodule info.</p>\n","comments":"<p>Call this to reload all cached submodule information for the repo.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":535,"lineto":537,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule - which can be set either temporarily or permanently with <code>git_submodule_set_ignore()</code>.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.21.1/status.html#git_submodule_status-18"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":553,"lineto":555,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":82,"lineto":84,"args":[{"name":"backend","type":"git_config_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":104,"lineto":108,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":80,"lineto":81,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":86,"lineto":87,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_options":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_opt_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":281,"lineto":282,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":297,"lineto":297,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":100,"lineto":102,"args":[{"name":"backend","type":"git_odb_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":169,"lineto":171,"args":[{"name":"backend","type":"git_refdb_backend *","comment":null},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":184,"lineto":186,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":22,"lineto":25,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":34,"lineto":36,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.21.1/general.html#git_tag_lookup-64"]}},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.21.1/general.html#git_tag_target-65"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_target_id-27"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_target_type-28"],"general.c":["ex/v0.21.1/general.html#git_tag_target_type-66"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_name-29"],"general.c":["ex/v0.21.1/general.html#git_tag_name-67"],"tag.c":["ex/v0.21.1/tag.html#git_tag_name-18"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_tagger-30"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tag_message-31","ex/v0.21.1/cat-file.html#git_tag_message-32"],"general.c":["ex/v0.21.1/general.html#git_tag_message-68"],"tag.c":["ex/v0.21.1/tag.html#git_tag_message-19"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_create-20"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_create_lightweight-21"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_delete-22"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.21.1/tag.html#git_tag_list_match-23"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_threads_init":{"type":"function","file":"threads.h","line":33,"lineto":33,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Init the threading system.</p>\n","comments":"<p>If libgit2 has been built with GIT_THREADS on, this function must be called once before any other library functions.</p>\n\n<p>If libgit2 has been built without GIT_THREADS support, this function is a no-op.</p>\n","group":"threads","examples":{"blame.c":["ex/v0.21.1/blame.html#git_threads_init-24"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_threads_init-33"],"diff.c":["ex/v0.21.1/diff.html#git_threads_init-14"],"init.c":["ex/v0.21.1/init.html#git_threads_init-11"],"log.c":["ex/v0.21.1/log.html#git_threads_init-53"],"network/git2.c":["ex/v0.21.1/network/git2.html#git_threads_init-5"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_threads_init-14"],"status.c":["ex/v0.21.1/status.html#git_threads_init-19"],"tag.c":["ex/v0.21.1/tag.html#git_threads_init-24"]}},"git_threads_shutdown":{"type":"function","file":"threads.h","line":45,"lineto":45,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Shutdown the threading system.</p>\n","comments":"<p>If libgit2 has been built with GIT_THREADS on, this function must be called before shutting down the library.</p>\n\n<p>If libgit2 has been built without GIT_THREADS support, this function is a no-op.</p>\n","group":"threads","examples":{"blame.c":["ex/v0.21.1/blame.html#git_threads_shutdown-25"],"cat-file.c":["ex/v0.21.1/cat-file.html#git_threads_shutdown-34"],"diff.c":["ex/v0.21.1/diff.html#git_threads_shutdown-15"],"init.c":["ex/v0.21.1/init.html#git_threads_shutdown-12"],"log.c":["ex/v0.21.1/log.html#git_threads_shutdown-54"],"rev-parse.c":["ex/v0.21.1/rev-parse.html#git_threads_shutdown-15"],"status.c":["ex/v0.21.1/status.html#git_threads_shutdown-20"],"tag.c":["ex/v0.21.1/tag.html#git_threads_shutdown-25"]}},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":116,"lineto":116,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":127,"lineto":130,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":143,"lineto":148,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":159,"lineto":163,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":173,"lineto":175,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":209,"lineto":209,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_transport_init":{"type":"function","file":"transport.h","line":323,"lineto":325,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"transport.h","line":337,"lineto":337,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_register":{"type":"function","file":"transport.h","line":357,"lineto":361,"args":[{"name":"prefix","type":"const char *","comment":"The scheme (ending in \"://\") to match, i.e. \"git://\""},{"name":"priority","type":"unsigned int","comment":"The priority of this transport relative to others with\n\t\tthe same prefix. Built-in transports have a priority of 1."},{"name":"cb","type":"git_transport_cb","comment":"The callback used to create an instance of the transport"},{"name":"param","type":"void *","comment":"A fixed parameter to pass to cb at creation time"}],"argline":"const char *prefix, unsigned int priority, git_transport_cb cb, void *param","sig":"const char *::unsigned int::git_transport_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a custom transport definition, to be used in addition to the built-in\n set of transports that come with libgit2.</p>\n","comments":"<p>The caller is responsible for synchronizing calls to git_transport_register and git_transport_unregister with other calls to the library that instantiate transports.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"transport.h","line":372,"lineto":374,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"},{"name":"priority","type":"unsigned int","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix, unsigned int priority","sig":"const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"transport.h","line":387,"lineto":390,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"transport.h","line":400,"lineto":403,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"transport.h","line":413,"lineto":416,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"transport.h","line":513,"lineto":515,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"transport.h","line":524,"lineto":526,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"transport.h","line":535,"lineto":537,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"}],"argline":"git_smart_subtransport **out, git_transport *owner","sig":"git_smart_subtransport **::git_transport *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_lookup-69","ex/v0.21.1/general.html#git_tree_lookup-70"],"init.c":["ex/v0.21.1/init.html#git_tree_lookup-13"]}},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.21.1/diff.html#git_tree_free-16","ex/v0.21.1/diff.html#git_tree_free-17"],"init.c":["ex/v0.21.1/init.html#git_tree_free-14"],"log.c":["ex/v0.21.1/log.html#git_tree_free-55","ex/v0.21.1/log.html#git_tree_free-56","ex/v0.21.1/log.html#git_tree_free-57","ex/v0.21.1/log.html#git_tree_free-58","ex/v0.21.1/log.html#git_tree_free-59"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_entry_byname-71"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_name-35"],"general.c":["ex/v0.21.1/general.html#git_tree_entry_name-72","ex/v0.21.1/general.html#git_tree_entry_name-73"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_id-36"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_type-37"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.21.1/cat-file.html#git_tree_entry_filemode-38"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.21.1/general.html#git_tree_entry_to_object-74"]}},"git_treebuilder_create":{"type":"function","file":"tree.h","line":253,"lineto":254,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, const git_tree *source","sig":"git_treebuilder **::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":261,"lineto":261,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":269,"lineto":269,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":280,"lineto":280,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":292,"lineto":293,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":320,"lineto":325,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":333,"lineto":334,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":357,"lineto":360,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":373,"lineto":374,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_repository *repo, git_treebuilder *bld","sig":"git_oid *::git_repository *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":404,"lineto":408,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":210,"lineto":216,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":219,"lineto":223,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"int","comment":null},{"name":"total_steps","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, int completed_steps, int total_steps, void *payload","sig":"const char *::int::int::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":329,"lineto":333,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":409,"lineto":412,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":430,"lineto":433,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":484,"lineto":488,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":138,"lineto":139,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":54,"lineto":54,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":185,"lineto":189,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_push_transfer_progress":{"type":"callback","file":"push.h","line":56,"lineto":60,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, int bytes, void *payload","sig":"unsigned int::unsigned int::int::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":27,"lineto":27,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":272,"lineto":274,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":75,"lineto":79,"args":[{"name":"index","type":"int","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"int index, const char *message, const int *stash_id, void *payload","sig":"int::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop"},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":59,"lineto":60,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":152,"lineto":152,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":164,"lineto":164,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":186,"lineto":190,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":204,"lineto":209,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":219,"lineto":221,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":223,"lineto":228,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":343,"lineto":344,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":378,"lineto":379,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":244,"lineto":244,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""}},"globals":{},"types":[["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["uint16_t lines_in_hunk","git_oid final_commit_id","uint16_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","uint16_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":116,"lineto":129,"block":"uint16_t lines_in_hunk\ngit_oid final_commit_id\nuint16_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nuint16_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"uint16_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"uint16_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"uint16_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","uint32_t min_line","uint32_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":71,"lineto":80,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nuint32_t min_line\nuint32_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"uint32_t","name":"min_line","comments":""},{"type":"uint32_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":78,"lineto":78,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":193,"lineto":197,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":198,"lineto":207,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_SAFE_CREATE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":108,"lineto":170,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_SAFE_CREATE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of four strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n</ul>\n\n<p>In between those are <code>GIT_CHECKOUT_SAFE</code> and <code>GIT_CHECKOUT_SAFE_CREATE</code> both of which only make modifications that will not lose changes.</p>\n\n<pre><code>                     |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | create if SAFE_CREATE |     create file      |      baseline present   | notify dirty DELETED  |                      |    ---------------------|-----------------------|----------------------|\n</code></pre>\n\n<p>The only difference between SAFE and SAFE_CREATE is that SAFE_CREATE will cause a file to be checked out if it is missing from the working directory even if it is not modified between the target and baseline.</p>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE_CREATE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>To emulate <code>git clone</code> use <code>GIT_CHECKOUT_SAFE_CREATE</code> in the options.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_SAFE_CREATE","comments":"<p>Allow safe updates plus creation of missing files </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that </p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":32,"lineto":52,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherry_pick","git_cherry_pick_commit","git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_free","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_string","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_refresh","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, const git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend *) refresh\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend *)","name":"refresh","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":56,"block":"GIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":108,"lineto":108,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":88,"lineto":93,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":77,"lineto":83,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":54,"lineto":58,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE"],"type":"enum","file":"transport.h","line":28,"lineto":43,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE"],"type":"enum","file":"diff.h","line":230,"lineto":240,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_status_char"]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":204,"lineto":204,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_patch_get_delta"],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blobs","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":307,"lineto":314,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_patch_get_delta"],"needs":["git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":263,"lineto":269,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_foreach"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":493,"lineto":562,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID"],"type":"enum","file":"diff.h","line":214,"lineto":218,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1151,"lineto":1158,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":920,"lineto":926,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":"git_diff_hunk","type":"struct","value":"git_diff_hunk","file":"diff.h","line":417,"lineto":417,"tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","used":{"returns":[],"needs":["git_diff_blobs","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_line",{"decl":"git_diff_line","type":"struct","value":"git_diff_line","file":"diff.h","line":465,"lineto":465,"tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","used":{"returns":[],"needs":["git_diff_blobs","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":444,"lineto":460,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":194,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags means to\n  apply it as an exact match instead of as an fnmatch pattern.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":567,"lineto":577,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, int, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1065,"lineto":1065,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_free"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1070,"lineto":1085,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":55,"lineto":58,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":["giterr_detach"]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_EMERGECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":47,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_EMERGECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>Merge conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK"],"type":"enum","file":"errors.h","line":61,"lineto":90,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH"],"type":"enum","file":"common.h","line":100,"lineto":104,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_NEW","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":200,"lineto":207,"block":"GIT_FILEMODE_NEW\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_NEW","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":241,"lineto":251,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n\n<p><code>version</code> should be set to GIT_FILTER_VERSION</p>\n\n<p><code>attributes</code> is a whitespace-separated list of attribute names to check for this filter (e.g. &quot;eol crlf text&quot;).  If the attribute name is bare, it will be simply loaded and passed to the <code>check</code> callback.  If it has a value (i.e. &quot;name=value&quot;), the attribute must match that value for the filter to be applied.</p>\n\n<p>The <code>initialize</code>, <code>shutdown</code>, <code>check</code>, <code>apply</code>, and <code>cleanup</code> callbacks are all documented above with the respective function pointer typedefs.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"attributes","comments":""},{"type":"git_filter_init_fn","name":"initialize","comments":""},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":""},{"type":"git_filter_check_fn","name":"check","comments":""},{"type":"git_filter_apply_fn","name":"apply","comments":""},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":""}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":70,"lineto":70,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":107,"lineto":127,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_bypath"],"needs":["git_checkout_index","git_cherry_pick_commit","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_repository_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":142,"lineto":147,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","unsigned int dev","unsigned int ino","unsigned int mode","unsigned int uid","unsigned int gid","git_off_t file_size","git_oid id","unsigned short flags","unsigned short flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":48,"lineto":65,"block":"git_index_time ctime\ngit_index_time mtime\nunsigned int dev\nunsigned int ino\nunsigned int mode\nunsigned int uid\nunsigned int gid\ngit_off_t file_size\ngit_oid id\nunsigned short flags\nunsigned short flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"unsigned int","name":"dev","comments":""},{"type":"unsigned int","name":"ino","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"unsigned int","name":"uid","comments":""},{"type":"unsigned int","name":"gid","comments":""},{"type":"git_off_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"unsigned short","name":"flags","comments":""},{"type":"unsigned short","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_bypath"],"needs":["git_index_add","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["git_time_t seconds","unsigned int nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"git_time_t seconds\nunsigned int nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"git_time_t","name":"seconds","comments":""},{"type":"unsigned int","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":130,"lineto":135,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":240,"lineto":269,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":79,"lineto":109,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_head",{"decl":"git_merge_head","type":"struct","value":"git_merge_head","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Merge heads, the input to merge ","comments":"","used":{"returns":[],"needs":["git_merge_head_free","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_head_id"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_merge_tree_flag_t",{"decl":["GIT_MERGE_TREE_FIND_RENAMES"],"type":"enum","file":"merge.h","line":66,"lineto":73,"block":"GIT_MERGE_TREE_FIND_RENAMES","tdef":"typedef","description":" Flags for `git_merge_tree` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_TREE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack","git_repository_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, size_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, size_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_read"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_stream_finalize_write","git_odb_stream_free"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, int, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, int, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_indexer_hash","git_merge_head_id","git_note_id","git_object_id","git_odb_object_id","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_head_from_fetchhead","git_merge_head_from_id","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_odb_exists","git_odb_foreach_cb","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_stream_finalize_write","git_oid_allocfmt","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tree_entry_byid","git_tree_lookup","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":212,"lineto":212,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":[],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object_lookup","git_object_lookup_bypath","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hashfile","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written","git_push_set_callbacks"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism"],"type":"struct","value":"git_push_options","file":"push.h","line":25,"lineto":37,"block":"unsigned int version\nunsigned int pb_parallelism","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."}],"used":{"returns":[],"needs":["git_push_init_options","git_push_set_options"]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":185,"lineto":190,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference from the refdb.  A refdb implementation\n must provide this function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb.  A refdb implementation may\n provide this function; if it is not provided, nothing will be done."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_branch_create","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_merge_head_from_ref","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":[],"needs":["git_reflog_append","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":[],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":453,"lineto":495,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":["git_remote_get_callbacks"],"needs":["git_remote_init_callbacks","git_remote_set_callbacks"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":441,"lineto":445,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":39,"lineto":49,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Remote head description, given out on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_blame_file","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_branch_create","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherry_pick","git_cherry_pick_commit","git_clone","git_clone_into","git_clone_local_into","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge_base","git_merge_commits","git_merge_file_from_index","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_trees","git_note_create","git_note_default_ref","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_packbuilder_new","git_pathspec_match_workdir","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_list","git_remote_load","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_set_head","git_repository_set_head_detached","git_repository_set_namespace","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_foreach","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_reload_all","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tree_entry_to_object","git_tree_lookup","git_treebuilder_write"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE"],"type":"enum","file":"repository.h","line":200,"lineto":207,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":222,"lineto":226,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":256,"lineto":265,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_branch_create","git_branch_move","git_clone_into","git_clone_local_into","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_note_create","git_note_remove","git_push_update_tips","git_reference_create","git_reference_create_matching","git_reference_rename","git_reference_set_target","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reflog_append","git_remote_fetch","git_remote_update_tips","git_repository_detach_head","git_repository_set_head","git_repository_set_head_detached","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":21,"lineto":38,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" \n\n git2/stash.h\n ","comments":"<p>@{</p>\n","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX"],"type":"enum","file":"status.h","line":135,"lineto":150,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":77,"lineto":81,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_IGNORED"],"type":"enum","file":"status.h","line":32,"lineto":48,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_IGNORED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384}],"used":{"returns":[],"needs":[]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":249,"lineto":249,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_update"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_save","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_RESET","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL","GIT_SUBMODULE_IGNORE_DEFAULT"],"type":"enum","file":"types.h","line":316,"lineto":325,"block":"GIT_SUBMODULE_IGNORE_RESET\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL\nGIT_SUBMODULE_IGNORE_DEFAULT","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_RESET: reset to the on-disk value. - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_RESET","comments":"<p>reset to on-disk value </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_ignore","git_submodule_set_ignore"],"needs":["git_submodule_set_ignore"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_RESET","GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":338,"lineto":344,"block":"GIT_SUBMODULE_RECURSE_RESET\nGIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_RESET - reset to the on-disk value * GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_RESET","comments":"","value":-1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":72,"lineto":87,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_RESET","GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":278,"lineto":287,"block":"GIT_SUBMODULE_UPDATE_RESET\nGIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_RESET: reset to the on-disk value. - GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_RESET","comments":"","value":-1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_set_update","git_submodule_update"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":382,"lineto":385,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}]],"prefix":"include/git2","groups":[["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get"]],["blame",["git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_free"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherry",["git_cherry_pick","git_cherry_pick_commit","git_cherry_pick_init_options"]],["clone",["git_clone","git_clone_init_options","git_clone_into","git_clone_local_into"]],["commit",["git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_free","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_find_global","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_string","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_refresh","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_has_username","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_new","git_cred_userpass_plaintext_new"]],["diff",["git_diff_blobs","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_options","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_detach","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_descendant_of"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_opts","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge_base","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_head_free","git_merge_head_from_fetchhead","git_merge_head_from_id","git_merge_head_from_ref","git_merge_head_id","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_create","git_note_default_ref","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack"]],["oid",["git_oid_allocfmt","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_tree","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_add_refspec","git_push_finish","git_push_free","git_push_init_options","git_push_new","git_push_set_callbacks","git_push_set_options","git_push_status_foreach","git_push_unpack_ok","git_push_update_tips"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_check_cert","git_remote_clear_refspecs","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_callbacks","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_load","git_remote_name","git_remote_owner","git_remote_pushurl","git_remote_rename","git_remote_save","git_remote_set_autotag","git_remote_set_callbacks","git_remote_set_fetch_refspecs","git_remote_set_push_refspecs","git_remote_set_pushurl","git_remote_set_transport","git_remote_set_update_fetchhead","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_supported_url","git_remote_update_fetchhead","git_remote_update_tips","git_remote_url","git_remote_valid_url"]],["repository",["git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_set_head","git_repository_set_head_detached","git_repository_set_namespace","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_foreach"]],["status",["git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_reload_all","git_submodule_save","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["threads",["git_threads_init","git_threads_shutdown"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_register","git_transport_smart","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_create","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.21.1/add.html"],["blame.c","ex/v0.21.1/blame.html"],["cat-file.c","ex/v0.21.1/cat-file.html"],["common.c","ex/v0.21.1/common.html"],["diff.c","ex/v0.21.1/diff.html"],["for-each-ref.c","ex/v0.21.1/for-each-ref.html"],["general.c","ex/v0.21.1/general.html"],["init.c","ex/v0.21.1/init.html"],["log.c","ex/v0.21.1/log.html"],["network/clone.c","ex/v0.21.1/network/clone.html"],["network/common.c","ex/v0.21.1/network/common.html"],["network/fetch.c","ex/v0.21.1/network/fetch.html"],["network/git2.c","ex/v0.21.1/network/git2.html"],["network/index-pack.c","ex/v0.21.1/network/index-pack.html"],["network/ls-remote.c","ex/v0.21.1/network/ls-remote.html"],["rev-list.c","ex/v0.21.1/rev-list.html"],["rev-parse.c","ex/v0.21.1/rev-parse.html"],["showindex.c","ex/v0.21.1/showindex.html"],["status.c","ex/v0.21.1/status.html"],["tag.c","ex/v0.21.1/tag.html"]]}
\ No newline at end of file
diff --git a/v0.23.4.json b/v0.23.4.json
index 0a84e9c..d5caf9c 100644
--- a/v0.23.4.json
+++ b/v0.23.4.json
@@ -1 +1 @@
-{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":354},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_amend"],"meta":{},"lines":364},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":247},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match"],"meta":{},"lines":691},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_merge","git_diff_find_similar","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_get_stats","git_diff_stats_free","git_diff_format_email","git_diff_format_email_init_options"],"meta":{},"lines":1301},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_detach","giterr_set_str","giterr_set_oom"],"meta":{},"lines":160},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_clear","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":755},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_base","git_merge_bases","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits"],"meta":{},"lines":518},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_exists","git_odb_refresh","git_odb_foreach","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate"],"meta":{},"lines":473},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromraw","git_oid_fmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_blobs","git_patch_free","git_patch_get_delta","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free"],"meta":{},"lines":201},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_next","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":286},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_connect","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":796},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":750},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_cb","git_stash_foreach"],"meta":{},"lines":221},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":622},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":109},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":305},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":102},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":213},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":[],"meta":{},"lines":40},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":350},{"file":"tag.h","functions":["git_tag_lookup","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_acquire_cb"],"meta":{},"lines":334},{"file":"tree.h","functions":["git_tree_lookup","git_tree_free","git_tree_id","git_tree_owner","git_tree_entry_byname","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"uint32_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, uint32_t lineno","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_file-2"]}},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.23.4/general.html#git_blob_lookup-1"]}},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.23.4/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.23.4/general.html#git_blob_rawsize-3","ex/v0.23.4/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return    0. This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.23.4/diff.html#git_buf_free-1"],"remote.c":["ex/v0.23.4/remote.html#git_buf_free-1"],"tag.c":["ex/v0.23.4/tag.html#git_buf_free-1"]}},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":322,"lineto":324,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":335,"lineto":338,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":351,"lineto":354,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.23.4/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_lookup-5","ex/v0.23.4/general.html#git_commit_lookup-6","ex/v0.23.4/general.html#git_commit_lookup-7"],"log.c":["ex/v0.23.4/log.html#git_commit_lookup-1"]}},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_free-8","ex/v0.23.4/general.html#git_commit_free-9","ex/v0.23.4/general.html#git_commit_free-10","ex/v0.23.4/general.html#git_commit_free-11"],"log.c":["ex/v0.23.4/log.html#git_commit_free-2","ex/v0.23.4/log.html#git_commit_free-3","ex/v0.23.4/log.html#git_commit_free-4","ex/v0.23.4/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_id-12"],"log.c":["ex/v0.23.4/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.23.4/log.html#git_commit_owner-7","ex/v0.23.4/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_message-3","ex/v0.23.4/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.23.4/general.html#git_commit_message-13","ex/v0.23.4/general.html#git_commit_message-14","ex/v0.23.4/general.html#git_commit_message-15"],"log.c":["ex/v0.23.4/log.html#git_commit_message-9","ex/v0.23.4/log.html#git_commit_message-10"],"tag.c":["ex/v0.23.4/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":136,"lineto":136,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_time-16","ex/v0.23.4/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":144,"lineto":144,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":152,"lineto":152,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.23.4/general.html#git_commit_committer-18"],"log.c":["ex/v0.23.4/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":160,"lineto":160,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.23.4/general.html#git_commit_author-19","ex/v0.23.4/general.html#git_commit_author-20"],"log.c":["ex/v0.23.4/log.html#git_commit_author-12","ex/v0.23.4/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":168,"lineto":168,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":177,"lineto":177,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.23.4/log.html#git_commit_tree-14","ex/v0.23.4/log.html#git_commit_tree-15","ex/v0.23.4/log.html#git_commit_tree-16","ex/v0.23.4/log.html#git_commit_tree-17","ex/v0.23.4/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":187,"lineto":187,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":195,"lineto":195,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.23.4/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.23.4/log.html#git_commit_parentcount-19","ex/v0.23.4/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":205,"lineto":208,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_parent-22"],"log.c":["ex/v0.23.4/log.html#git_commit_parent-21","ex/v0.23.4/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":219,"lineto":221,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.23.4/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":237,"lineto":240,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":251,"lineto":251,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_amend":{"type":"function","file":"commit.h","line":356,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":96,"lineto":96,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":126,"lineto":126,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":247,"lineto":247,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, or        &gt; `GIT_CONFIG_LEVEL_XDG`.  The search path is written to the `out`      &gt; buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be GIT_CONFIG_LEVEL_SYSTEM, GIT_CONFIG_LEVEL_GLOBAL,       &gt;   or GIT_CONFIG_LEVEL_XDG.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":72,"lineto":72,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":113,"lineto":113,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":130,"lineto":130,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":142,"lineto":142,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":154,"lineto":154,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":165,"lineto":165,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":192,"lineto":196,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":210,"lineto":210,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_open_ondisk-23"]}},"git_config_open_level":{"type":"function","file":"config.h","line":228,"lineto":231,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":245,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":261,"lineto":261,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":268,"lineto":268,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":280,"lineto":283,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":297,"lineto":297,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_get_int32-24"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":328,"lineto":328,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":346,"lineto":346,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":364,"lineto":364,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_get_string-25"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":380,"lineto":380,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":405,"lineto":405,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":417,"lineto":417,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":424,"lineto":424,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":435,"lineto":435,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":446,"lineto":446,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":457,"lineto":457,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":481,"lineto":481,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":490,"lineto":490,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":501,"lineto":501,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":519,"lineto":522,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":533,"lineto":533,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":545,"lineto":545,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":563,"lineto":567,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":634,"lineto":634,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":646,"lineto":646,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":658,"lineto":658,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":673,"lineto":673,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":687,"lineto":691,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":412,"lineto":414,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":697,"lineto":699,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":713,"lineto":713,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_free-2"],"log.c":["ex/v0.23.4/log.html#git_diff_free-24","ex/v0.23.4/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":731,"lineto":736,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.23.4/log.html#git_diff_tree_to_tree-26","ex/v0.23.4/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":757,"lineto":762,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":784,"lineto":788,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":813,"lineto":817,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":832,"lineto":836,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_merge":{"type":"function","file":"diff.h","line":851,"lineto":853,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":867,"lineto":869,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_find_similar-8"]}},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":957,"lineto":963,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":976,"lineto":976,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1001,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_print-9"],"log.c":["ex/v0.23.4/log.html#git_diff_print-28"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1042,"lineto":1052,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1161,"lineto":1163,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumlate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1213,"lineto":1213,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_stats_free-11"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1262,"lineto":1265,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1299,"lineto":1301,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":109,"lineto":109,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.23.4/general.html#giterr_last-26"],"network/clone.c":["ex/v0.23.4/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.23.4/network/git2.html#giterr_last-1","ex/v0.23.4/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":114,"lineto":114,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_detach":{"type":"function","file":"errors.h","line":126,"lineto":126,"args":[{"name":"cpy","type":"git_error *","comment":null}],"argline":"git_error *cpy","sig":"git_error *","return":{"type":"int","comment":null},"description":"<p>Get the last error data and clear it.</p>\n","comments":"<p>This copies the last error into the given <code>git_error</code> struct and returns 0 if the copy was successful, leaving the error cleared as if <code>giterr_clear</code> had been called.</p>\n\n<p>If there was no existing error in the library, -1 will be returned and the contents of <code>cpy</code> will be left unmodified.</p>\n","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":149,"lineto":149,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n\n<p>NOTE: Passing the <code>error_class</code> as GITERR_OS has a special behavior: we attempt to append the system default error message for the last OS error that occurred and then clear the last error.  The specific implementation of looking up and clearing this last OS error will vary by platform.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":160,"lineto":160,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.23.4/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.23.4/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.23.4/diff.html#git_libgit2_init-12"],"general.c":["ex/v0.23.4/general.html#git_libgit2_init-27"],"init.c":["ex/v0.23.4/init.html#git_libgit2_init-1"],"log.c":["ex/v0.23.4/log.html#git_libgit2_init-29"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.23.4/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.23.4/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.23.4/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.23.4/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.23.4/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.23.4/diff.html#git_libgit2_shutdown-13"],"init.c":["ex/v0.23.4/init.html#git_libgit2_shutdown-2"],"log.c":["ex/v0.23.4/log.html#git_libgit2_shutdown-30"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.23.4/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.23.4/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.23.4/tag.html#git_libgit2_shutdown-4"]}},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":189,"lineto":189,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":202,"lineto":202,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":209,"lineto":209,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.23.4/general.html#git_index_free-28"],"init.c":["ex/v0.23.4/init.html#git_index_free-3"]}},"git_index_owner":{"type":"function","file":"index.h","line":217,"lineto":217,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":225,"lineto":225,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":238,"lineto":238,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":257,"lineto":257,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":266,"lineto":266,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":274,"lineto":274,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":286,"lineto":286,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":297,"lineto":297,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.23.4/init.html#git_index_write_tree-4"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_clear":{"type":"function","file":"index.h","line":365,"lineto":365,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_bypath":{"type":"function","file":"index.h","line":393,"lineto":394,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":414,"lineto":415,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":431,"lineto":431,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":452,"lineto":452,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":483,"lineto":483,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":531,"lineto":531,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":578,"lineto":583,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":600,"lineto":604,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":629,"lineto":633,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":669,"lineto":673,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":689,"lineto":694,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":703,"lineto":703,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":711,"lineto":711,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":718,"lineto":718,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":729,"lineto":731,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":743,"lineto":747,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":754,"lineto":755,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_commit-2"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_hash-3"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_free-4"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":188,"lineto":190,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":265,"lineto":267,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":352,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.23.4/log.html#git_merge_base-31"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":367,"lineto":371,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":434,"lineto":439,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":455,"lineto":461,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":468,"lineto":468,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":486,"lineto":492,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":513,"lineto":518,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The merge performed uses the first common ancestor, unlike the <code>git-merge-recursive</code> strategy, which may produce an artificial common ancestor tree when there are multiple ancestors.</p>\n\n<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.23.4/log.html#git_object_lookup-32"]}},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.23.4/blame.html#git_object_id-10","ex/v0.23.4/blame.html#git_object_id-11","ex/v0.23.4/blame.html#git_object_id-12","ex/v0.23.4/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_id-12","ex/v0.23.4/cat-file.html#git_object_id-13"],"log.c":["ex/v0.23.4/log.html#git_object_id-33","ex/v0.23.4/log.html#git_object_id-34","ex/v0.23.4/log.html#git_object_id-35","ex/v0.23.4/log.html#git_object_id-36"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_object_id-4","ex/v0.23.4/rev-parse.html#git_object_id-5","ex/v0.23.4/rev-parse.html#git_object_id-6","ex/v0.23.4/rev-parse.html#git_object_id-7","ex/v0.23.4/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.23.4/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_type-14","ex/v0.23.4/cat-file.html#git_object_type-15","ex/v0.23.4/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.23.4/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.23.4/blame.html#git_object_free-14","ex/v0.23.4/blame.html#git_object_free-15","ex/v0.23.4/blame.html#git_object_free-16","ex/v0.23.4/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_free-17"],"general.c":["ex/v0.23.4/general.html#git_object_free-29"],"log.c":["ex/v0.23.4/log.html#git_object_free-37"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_object_free-9","ex/v0.23.4/rev-parse.html#git_object_free-10","ex/v0.23.4/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.23.4/tag.html#git_object_free-7","ex/v0.23.4/tag.html#git_object_free-8","ex/v0.23.4/tag.html#git_object_free-9","ex/v0.23.4/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_type2string-18","ex/v0.23.4/cat-file.html#git_object_type2string-19","ex/v0.23.4/cat-file.html#git_object_type2string-20","ex/v0.23.4/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.23.4/general.html#git_object_type2string-30"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.23.4/general.html#git_odb_read-31"]}},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.23.4/general.html#git_odb_object_free-32"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.23.4/general.html#git_odb_object_data-33"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.23.4/general.html#git_odb_object_type-34"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.23.4/general.html#git_oid_fromstr-35","ex/v0.23.4/general.html#git_oid_fromstr-36","ex/v0.23.4/general.html#git_oid_fromstr-37","ex/v0.23.4/general.html#git_oid_fromstr-38","ex/v0.23.4/general.html#git_oid_fromstr-39","ex/v0.23.4/general.html#git_oid_fromstr-40","ex/v0.23.4/general.html#git_oid_fromstr-41","ex/v0.23.4/general.html#git_oid_fromstr-42"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.23.4/general.html#git_oid_fmt-43","ex/v0.23.4/general.html#git_oid_fmt-44","ex/v0.23.4/general.html#git_oid_fmt-45","ex/v0.23.4/general.html#git_oid_fmt-46","ex/v0.23.4/general.html#git_oid_fmt-47"],"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_oid_fmt-1","ex/v0.23.4/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_oid_fmt-5"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.23.4/blame.html#git_oid_cpy-18","ex/v0.23.4/blame.html#git_oid_cpy-19","ex/v0.23.4/blame.html#git_oid_cpy-20"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.23.4/blame.html#git_oid_iszero-21"],"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_new-38"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_free-39"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_match_tree-40"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":141,"lineto":143,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":162,"lineto":168,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":179,"lineto":182,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":251,"lineto":257,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":267,"lineto":267,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":277,"lineto":279,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":286,"lineto":286,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_lookup-48"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_target-49"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_symbolic_target-50"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_type-51"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_list-52"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.23.4/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.23.4/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.23.4/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":246,"lineto":246,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks","sig":"git_remote *::git_direction::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_connect-6"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":279,"lineto":279,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":289,"lineto":289,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":298,"lineto":298,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_disconnect-7"]}},"git_remote_free":{"type":"function","file":"remote.h","line":308,"lineto":308,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_free-8","ex/v0.23.4/network/fetch.html#git_remote_free-9"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_free-5"],"remote.c":["ex/v0.23.4/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":319,"lineto":319,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":470,"lineto":472,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":563,"lineto":565,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":602,"lineto":604,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":622,"lineto":622,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_download-10"]}},"git_remote_upload":{"type":"function","file":"remote.h","line":636,"lineto":636,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":652,"lineto":657,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_update_tips-11"]}},"git_remote_fetch":{"type":"function","file":"remote.h","line":673,"lineto":677,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote"},"git_remote_prune":{"type":"function","file":"remote.h","line":686,"lineto":686,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":698,"lineto":700,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":705,"lineto":705,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_stats-12"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":713,"lineto":713,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":725,"lineto":725,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":732,"lineto":732,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":754,"lineto":758,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":766,"lineto":766,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":778,"lineto":778,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":796,"lineto":796,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.23.4/general.html#git_repository_open-53"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.23.4/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.23.4/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.23.4/blame.html#git_repository_open_ext-22"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_open_ext-25"],"describe.c":["ex/v0.23.4/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.23.4/diff.html#git_repository_open_ext-14"],"log.c":["ex/v0.23.4/log.html#git_repository_open_ext-41","ex/v0.23.4/log.html#git_repository_open_ext-42"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_repository_open_ext-12"],"status.c":["ex/v0.23.4/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.23.4/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.23.4/blame.html#git_repository_free-23"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_free-26"],"describe.c":["ex/v0.23.4/describe.html#git_repository_free-7"],"diff.c":["ex/v0.23.4/diff.html#git_repository_free-15"],"general.c":["ex/v0.23.4/general.html#git_repository_free-54"],"init.c":["ex/v0.23.4/init.html#git_repository_free-5"],"log.c":["ex/v0.23.4/log.html#git_repository_free-43"],"network/clone.c":["ex/v0.23.4/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_repository_free-13"],"status.c":["ex/v0.23.4/status.html#git_repository_free-6"],"tag.c":["ex/v0.23.4/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_init-6"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_init_ext-7"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.23.4/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_path-8"],"status.c":["ex/v0.23.4/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_workdir-9"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.23.4/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_odb-27"],"general.c":["ex/v0.23.4/general.html#git_repository_odb-55"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.23.4/general.html#git_repository_index-56"],"init.c":["ex/v0.23.4/init.html#git_repository_index-10"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":694,"lineto":694,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":708,"lineto":708,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":716,"lineto":716,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":725,"lineto":725,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":750,"lineto":750,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.23.4/blame.html#git_revparse_single-24"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_revparse_single-28"],"describe.c":["ex/v0.23.4/describe.html#git_revparse_single-8"],"log.c":["ex/v0.23.4/log.html#git_revparse_single-44"],"tag.c":["ex/v0.23.4/tag.html#git_revparse_single-13","ex/v0.23.4/tag.html#git_revparse_single-14","ex/v0.23.4/tag.html#git_revparse_single-15","ex/v0.23.4/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.23.4/blame.html#git_revparse-25"],"log.c":["ex/v0.23.4/log.html#git_revparse-45"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_revparse-14","ex/v0.23.4/rev-parse.html#git_revparse-15"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_new-57"],"log.c":["ex/v0.23.4/log.html#git_revwalk_new-46","ex/v0.23.4/log.html#git_revwalk_new-47"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_push-58"],"log.c":["ex/v0.23.4/log.html#git_revwalk_push-48"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.23.4/log.html#git_revwalk_push_head-49"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.23.4/log.html#git_revwalk_hide-50"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_next-59"],"log.c":["ex/v0.23.4/log.html#git_revwalk_next-51"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_sorting-60"],"log.c":["ex/v0.23.4/log.html#git_revwalk_sorting-52","ex/v0.23.4/log.html#git_revwalk_sorting-53"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_free-61"],"log.c":["ex/v0.23.4/log.html#git_revwalk_free-54"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.23.4/general.html#git_signature_new-62","ex/v0.23.4/general.html#git_signature_new-63"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.23.4/init.html#git_signature_default-11"],"tag.c":["ex/v0.23.4/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.23.4/init.html#git_signature_free-12"],"tag.c":["ex/v0.23.4/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_list_new-12","ex/v0.23.4/status.html#git_status_list_new-13"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_list_free-14"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.23.4/general.html#git_strarray_free-64"],"remote.c":["ex/v0.23.4/remote.html#git_strarray_free-16","ex/v0.23.4/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.23.4/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":162,"lineto":163,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":181,"lineto":181,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":220,"lineto":220,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":240,"lineto":243,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"int (*)(git_submodule *, const char *, void *)","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, int (*)(git_submodule *, const char *, void *) callback, void *payload","sig":"git_repository *::int (*)(git_submodule *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_foreach-15"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":270,"lineto":275,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":287,"lineto":287,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":299,"lineto":301,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":314,"lineto":314,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":322,"lineto":322,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_name-16"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_path-17"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":351,"lineto":351,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":359,"lineto":359,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":372,"lineto":372,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":386,"lineto":386,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":394,"lineto":394,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":402,"lineto":402,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":415,"lineto":415,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":440,"lineto":441,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":453,"lineto":456,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":468,"lineto":469,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":481,"lineto":484,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":497,"lineto":498,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":510,"lineto":513,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":528,"lineto":528,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":543,"lineto":546,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":556,"lineto":556,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":570,"lineto":572,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":584,"lineto":584,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":600,"lineto":604,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_status-18"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":620,"lineto":622,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":83,"lineto":85,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":105,"lineto":109,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":289,"lineto":290,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":305,"lineto":305,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":100,"lineto":102,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":182,"lineto":184,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":197,"lineto":199,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":211,"lineto":213,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":112,"lineto":114,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":126,"lineto":126,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":142,"lineto":142,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":170,"lineto":171,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":184,"lineto":187,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":197,"lineto":200,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":323,"lineto":326,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":335,"lineto":338,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":347,"lineto":350,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.23.4/general.html#git_tag_lookup-65"]}},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.23.4/general.html#git_tag_target-66"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_target_id-29"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_target_type-30"],"general.c":["ex/v0.23.4/general.html#git_tag_target_type-67"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_name-31"],"general.c":["ex/v0.23.4/general.html#git_tag_name-68"],"tag.c":["ex/v0.23.4/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_tagger-32"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_message-33","ex/v0.23.4/cat-file.html#git_tag_message-34"],"general.c":["ex/v0.23.4/general.html#git_tag_message-69"],"tag.c":["ex/v0.23.4/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":197,"lineto":197,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":208,"lineto":211,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":224,"lineto":229,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":240,"lineto":244,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":254,"lineto":256,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":290,"lineto":290,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":298,"lineto":298,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":310,"lineto":315,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_lookup-70","ex/v0.23.4/general.html#git_tree_lookup-71"],"init.c":["ex/v0.23.4/init.html#git_tree_lookup-13"]}},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.23.4/diff.html#git_tree_free-16","ex/v0.23.4/diff.html#git_tree_free-17"],"init.c":["ex/v0.23.4/init.html#git_tree_free-14"],"log.c":["ex/v0.23.4/log.html#git_tree_free-55","ex/v0.23.4/log.html#git_tree_free-56","ex/v0.23.4/log.html#git_tree_free-57","ex/v0.23.4/log.html#git_tree_free-58","ex/v0.23.4/log.html#git_tree_free-59"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_entry_byname-72"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_name-35"],"general.c":["ex/v0.23.4/general.html#git_tree_entry_name-73","ex/v0.23.4/general.html#git_tree_entry_name-74"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_id-36"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_type-37"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_filemode-38"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_entry_to_object-75"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"int","comment":null},{"name":"total_steps","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, int completed_steps, int total_steps, void *payload","sig":"const char *::int::int::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":343,"lineto":347,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":423,"lineto":426,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":470,"lineto":473,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":490,"lineto":493,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":543,"lineto":547,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":332,"lineto":336,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, int bytes, void *payload","sig":"unsigned int::unsigned int::int::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":365,"lineto":365,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"int","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, int len, void *payload","sig":"const git_push_update **::int::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"int","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"int index, const char *message, const int *stash_id, void *payload","sig":"int::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":152,"lineto":152,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":164,"lineto":164,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":186,"lineto":190,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":204,"lineto":209,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":226,"lineto":228,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":329,"lineto":334,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["uint16_t lines_in_hunk","git_oid final_commit_id","uint16_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","uint16_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"uint16_t lines_in_hunk\ngit_oid final_commit_id\nuint16_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nuint16_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"uint16_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"uint16_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"uint16_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","uint32_t min_line","uint32_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nuint32_t min_line\nuint32_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"uint32_t","name":"min_line","comments":""},{"type":"uint32_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb"]}}],["git_cert_hostkey",{"decl":["git_cert_t cert_type","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":62,"block":"git_cert_t cert_type\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. Here to share the header with\n `git_cert`."},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":61,"lineto":67,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":56,"block":"GIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":183,"lineto":183,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":163,"lineto":168,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":152,"lineto":158,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":186,"lineto":189,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":129,"lineto":133,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":88,"lineto":118,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":90,"lineto":94,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":80,"lineto":85,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":242,"lineto":254,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":215,"lineto":215,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_patch_get_delta"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blobs","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blobs","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":434,"lineto":443,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":321,"lineto":328,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_patch_get_delta"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":277,"lineto":283,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_foreach"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":552,"lineto":621,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":225,"lineto":230,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1218,"lineto":1225,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":981,"lineto":987,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":504,"lineto":520,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":205,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags means to\n  apply it as an exact match instead of as an fnmatch pattern.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":626,"lineto":636,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, int, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1132,"lineto":1132,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_free"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1137,"lineto":1152,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":63,"lineto":66,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":["giterr_detach"]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":55,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":69,"lineto":101,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH"],"type":"enum","file":"common.h","line":102,"lineto":106,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":522,"lineto":549,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":248,"lineto":259,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n\n<p><code>version</code> should be set to GIT_FILTER_VERSION</p>\n\n<p><code>attributes</code> is a whitespace-separated list of attribute names to check for this filter (e.g. &quot;eol crlf text&quot;).  If the attribute name is bare, it will be simply loaded and passed to the <code>check</code> callback.  If it has a value (i.e. &quot;name=value&quot;), the attribute must match that value for the filter to be applied.</p>\n\n<p>The <code>initialize</code>, <code>shutdown</code>, <code>check</code>, <code>apply</code>, and <code>cleanup</code> callbacks are all documented above with the respective function pointer typedefs.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"attributes","comments":""},{"type":"git_filter_init_fn","name":"initialize","comments":""},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":""},{"type":"git_filter_check_fn","name":"check","comments":""},{"type":"git_filter_apply_fn","name":"apply","comments":""},{"type":"git_filter_stream_fn","name":"stream","comments":""},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":""}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_bypath"],"needs":["git_index_add","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS"],"type":"enum","file":"common.h","line":134,"lineto":148,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":272,"lineto":301,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":81,"lineto":111,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flags_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":116,"lineto":143,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","unsigned int flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":148,"lineto":174,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\nunsigned int flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"unsigned int","name":"flags","comments":" see `git_merge_file_flags_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_tree_flag_t tree_flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","git_merge_file_favor_t file_favor","unsigned int file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":221,"lineto":251,"block":"unsigned int version\ngit_merge_tree_flag_t tree_flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\ngit_merge_file_favor_t file_favor\nunsigned int file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_tree_flag_t","name":"tree_flags","comments":""},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_TREE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"unsigned int","name":"file_flags","comments":" see `git_merge_file_flags_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":306,"lineto":324,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_merge_tree_flag_t",{"decl":["GIT_MERGE_TREE_FIND_RENAMES"],"type":"enum","file":"merge.h","line":68,"lineto":75,"block":"GIT_MERGE_TREE_FIND_RENAMES","tdef":"typedef","description":" Flags for `git_merge_tree` options.  A combination of these flags can be\n passed in via the `tree_flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_TREE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_read"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, int) read\nint (*)(git_odb_stream *, const char *, int) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, int)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, int)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, int, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, int, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_bases","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_odb_exists","git_odb_foreach_cb","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_stream_finalize_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tree_entry_byid","git_tree_lookup","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":[],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object_lookup","git_object_lookup_bypath","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hashfile","git_odb_open_wstream","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks"],"type":"struct","value":"git_push_options","file":"remote.h","line":571,"lineto":588,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":340,"lineto":357,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":[],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_next","git_rebase_open"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":115,"lineto":130,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":[],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":64,"lineto":100,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference from the refdb.  A refdb implementation\n must provide this function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb.  A refdb implementation may\n provide this function; if it is not provided, nothing will be done."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":[],"needs":["git_reflog_append","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":[],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_lookup","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":494,"lineto":512,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":373,"lineto":457,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":325,"lineto":329,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_blame_file","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_describe_workdir","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge_base","git_merge_bases","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_foreach","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tree_entry_to_object","git_tree_lookup","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":685,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":9}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":297,"lineto":310,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":[]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":[]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_value"]],["blame",["git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_is_binary"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_has_username","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blobs","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_detach","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge_base","git_merge_bases","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_next","git_rebase_open"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply_init_options","git_stash_foreach"]],["status",["git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.23.4/add.html"],["blame.c","ex/v0.23.4/blame.html"],["cat-file.c","ex/v0.23.4/cat-file.html"],["common.c","ex/v0.23.4/common.html"],["describe.c","ex/v0.23.4/describe.html"],["diff.c","ex/v0.23.4/diff.html"],["for-each-ref.c","ex/v0.23.4/for-each-ref.html"],["general.c","ex/v0.23.4/general.html"],["init.c","ex/v0.23.4/init.html"],["log.c","ex/v0.23.4/log.html"],["network/clone.c","ex/v0.23.4/network/clone.html"],["network/common.c","ex/v0.23.4/network/common.html"],["network/fetch.c","ex/v0.23.4/network/fetch.html"],["network/git2.c","ex/v0.23.4/network/git2.html"],["network/index-pack.c","ex/v0.23.4/network/index-pack.html"],["network/ls-remote.c","ex/v0.23.4/network/ls-remote.html"],["remote.c","ex/v0.23.4/remote.html"],["rev-list.c","ex/v0.23.4/rev-list.html"],["rev-parse.c","ex/v0.23.4/rev-parse.html"],["showindex.c","ex/v0.23.4/showindex.html"],["status.c","ex/v0.23.4/status.html"],["tag.c","ex/v0.23.4/tag.html"]]}
\ No newline at end of file
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":354},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_amend"],"meta":{},"lines":364},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":247},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match"],"meta":{},"lines":691},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_merge","git_diff_find_similar","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_get_stats","git_diff_stats_free","git_diff_format_email","git_diff_format_email_init_options"],"meta":{},"lines":1301},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_detach","giterr_set_str","giterr_set_oom"],"meta":{},"lines":160},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_clear","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":755},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_base","git_merge_bases","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits"],"meta":{},"lines":518},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_exists","git_odb_refresh","git_odb_foreach","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate"],"meta":{},"lines":473},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromraw","git_oid_fmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_blobs","git_patch_free","git_patch_get_delta","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free"],"meta":{},"lines":201},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_next","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":286},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_connect","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":796},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":750},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_cb","git_stash_foreach"],"meta":{},"lines":221},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":622},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":109},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":305},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":102},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":213},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":[],"meta":{},"lines":40},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":350},{"file":"tag.h","functions":["git_tag_lookup","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_acquire_cb"],"meta":{},"lines":334},{"file":"tree.h","functions":["git_tree_lookup","git_tree_free","git_tree_id","git_tree_owner","git_tree_entry_byname","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"uint32_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, uint32_t lineno","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_file-2"]}},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.23.4/general.html#git_blob_lookup-1"]}},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.23.4/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.23.4/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.23.4/general.html#git_blob_rawsize-3","ex/v0.23.4/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return    0. This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.23.4/diff.html#git_buf_free-1"],"remote.c":["ex/v0.23.4/remote.html#git_buf_free-1"],"tag.c":["ex/v0.23.4/tag.html#git_buf_free-1"]}},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":322,"lineto":324,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":335,"lineto":338,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":351,"lineto":354,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.23.4/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_lookup-5","ex/v0.23.4/general.html#git_commit_lookup-6","ex/v0.23.4/general.html#git_commit_lookup-7"],"log.c":["ex/v0.23.4/log.html#git_commit_lookup-1"]}},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_free-8","ex/v0.23.4/general.html#git_commit_free-9","ex/v0.23.4/general.html#git_commit_free-10","ex/v0.23.4/general.html#git_commit_free-11"],"log.c":["ex/v0.23.4/log.html#git_commit_free-2","ex/v0.23.4/log.html#git_commit_free-3","ex/v0.23.4/log.html#git_commit_free-4","ex/v0.23.4/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_id-12"],"log.c":["ex/v0.23.4/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.23.4/log.html#git_commit_owner-7","ex/v0.23.4/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_message-3","ex/v0.23.4/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.23.4/general.html#git_commit_message-13","ex/v0.23.4/general.html#git_commit_message-14","ex/v0.23.4/general.html#git_commit_message-15"],"log.c":["ex/v0.23.4/log.html#git_commit_message-9","ex/v0.23.4/log.html#git_commit_message-10"],"tag.c":["ex/v0.23.4/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":136,"lineto":136,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_time-16","ex/v0.23.4/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":144,"lineto":144,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":152,"lineto":152,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.23.4/general.html#git_commit_committer-18"],"log.c":["ex/v0.23.4/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":160,"lineto":160,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.23.4/general.html#git_commit_author-19","ex/v0.23.4/general.html#git_commit_author-20"],"log.c":["ex/v0.23.4/log.html#git_commit_author-12","ex/v0.23.4/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":168,"lineto":168,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":177,"lineto":177,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.23.4/log.html#git_commit_tree-14","ex/v0.23.4/log.html#git_commit_tree-15","ex/v0.23.4/log.html#git_commit_tree-16","ex/v0.23.4/log.html#git_commit_tree-17","ex/v0.23.4/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":187,"lineto":187,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":195,"lineto":195,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.23.4/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.23.4/log.html#git_commit_parentcount-19","ex/v0.23.4/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":205,"lineto":208,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.23.4/general.html#git_commit_parent-22"],"log.c":["ex/v0.23.4/log.html#git_commit_parent-21","ex/v0.23.4/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":219,"lineto":221,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.23.4/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":237,"lineto":240,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":251,"lineto":251,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_amend":{"type":"function","file":"commit.h","line":356,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":96,"lineto":96,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":126,"lineto":126,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":247,"lineto":247,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`, or        &gt; `GIT_CONFIG_LEVEL_XDG`.  The search path is written to the `out`      &gt; buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be GIT_CONFIG_LEVEL_SYSTEM, GIT_CONFIG_LEVEL_GLOBAL,       &gt;   or GIT_CONFIG_LEVEL_XDG.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":72,"lineto":72,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":113,"lineto":113,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":130,"lineto":130,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":142,"lineto":142,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":154,"lineto":154,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":165,"lineto":165,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":192,"lineto":196,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":210,"lineto":210,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_open_ondisk-23"]}},"git_config_open_level":{"type":"function","file":"config.h","line":228,"lineto":231,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":245,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":261,"lineto":261,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":268,"lineto":268,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":280,"lineto":283,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":297,"lineto":297,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_get_int32-24"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":328,"lineto":328,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":346,"lineto":346,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":364,"lineto":364,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.23.4/general.html#git_config_get_string-25"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":380,"lineto":380,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":405,"lineto":405,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":417,"lineto":417,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":424,"lineto":424,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":435,"lineto":435,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":446,"lineto":446,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":457,"lineto":457,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":481,"lineto":481,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":490,"lineto":490,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":501,"lineto":501,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":519,"lineto":522,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":533,"lineto":533,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":545,"lineto":545,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":563,"lineto":567,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":634,"lineto":634,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":646,"lineto":646,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":658,"lineto":658,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":673,"lineto":673,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":687,"lineto":691,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.23.4/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":412,"lineto":414,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":697,"lineto":699,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":713,"lineto":713,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_free-2"],"log.c":["ex/v0.23.4/log.html#git_diff_free-24","ex/v0.23.4/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":731,"lineto":736,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.23.4/log.html#git_diff_tree_to_tree-26","ex/v0.23.4/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":757,"lineto":762,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":784,"lineto":788,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":813,"lineto":817,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":832,"lineto":836,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_merge":{"type":"function","file":"diff.h","line":851,"lineto":853,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":867,"lineto":869,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_find_similar-8"]}},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":957,"lineto":963,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":976,"lineto":976,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1001,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_print-9"],"log.c":["ex/v0.23.4/log.html#git_diff_print-28"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1042,"lineto":1052,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1161,"lineto":1163,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumlate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1213,"lineto":1213,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.23.4/diff.html#git_diff_stats_free-11"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1262,"lineto":1265,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1299,"lineto":1301,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":109,"lineto":109,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.23.4/general.html#giterr_last-26"],"network/clone.c":["ex/v0.23.4/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.23.4/network/git2.html#giterr_last-1","ex/v0.23.4/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":114,"lineto":114,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_detach":{"type":"function","file":"errors.h","line":126,"lineto":126,"args":[{"name":"cpy","type":"git_error *","comment":null}],"argline":"git_error *cpy","sig":"git_error *","return":{"type":"int","comment":null},"description":"<p>Get the last error data and clear it.</p>\n","comments":"<p>This copies the last error into the given <code>git_error</code> struct and returns 0 if the copy was successful, leaving the error cleared as if <code>giterr_clear</code> had been called.</p>\n\n<p>If there was no existing error in the library, -1 will be returned and the contents of <code>cpy</code> will be left unmodified.</p>\n","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":149,"lineto":149,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n\n<p>NOTE: Passing the <code>error_class</code> as GITERR_OS has a special behavior: we attempt to append the system default error message for the last OS error that occurred and then clear the last error.  The specific implementation of looking up and clearing this last OS error will vary by platform.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":160,"lineto":160,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.23.4/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.23.4/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.23.4/diff.html#git_libgit2_init-12"],"general.c":["ex/v0.23.4/general.html#git_libgit2_init-27"],"init.c":["ex/v0.23.4/init.html#git_libgit2_init-1"],"log.c":["ex/v0.23.4/log.html#git_libgit2_init-29"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.23.4/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.23.4/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.23.4/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.23.4/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.23.4/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.23.4/diff.html#git_libgit2_shutdown-13"],"init.c":["ex/v0.23.4/init.html#git_libgit2_shutdown-2"],"log.c":["ex/v0.23.4/log.html#git_libgit2_shutdown-30"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.23.4/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.23.4/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.23.4/tag.html#git_libgit2_shutdown-4"]}},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":189,"lineto":189,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":202,"lineto":202,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":209,"lineto":209,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.23.4/general.html#git_index_free-28"],"init.c":["ex/v0.23.4/init.html#git_index_free-3"]}},"git_index_owner":{"type":"function","file":"index.h","line":217,"lineto":217,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":225,"lineto":225,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":238,"lineto":238,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":257,"lineto":257,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":266,"lineto":266,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":274,"lineto":274,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":286,"lineto":286,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":297,"lineto":297,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.23.4/init.html#git_index_write_tree-4"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_clear":{"type":"function","file":"index.h","line":365,"lineto":365,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_bypath":{"type":"function","file":"index.h","line":393,"lineto":394,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":414,"lineto":415,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":431,"lineto":431,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":452,"lineto":452,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":483,"lineto":483,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":531,"lineto":531,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":578,"lineto":583,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":600,"lineto":604,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":629,"lineto":633,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":669,"lineto":673,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":689,"lineto":694,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":703,"lineto":703,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":711,"lineto":711,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":718,"lineto":718,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":729,"lineto":731,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":743,"lineto":747,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":754,"lineto":755,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_commit-2"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_hash-3"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_indexer_free-4"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":188,"lineto":190,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":265,"lineto":267,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":352,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.23.4/log.html#git_merge_base-31"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":367,"lineto":371,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":434,"lineto":439,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":455,"lineto":461,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":468,"lineto":468,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":486,"lineto":492,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":513,"lineto":518,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The merge performed uses the first common ancestor, unlike the <code>git-merge-recursive</code> strategy, which may produce an artificial common ancestor tree when there are multiple ancestors.</p>\n\n<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.23.4/log.html#git_object_lookup-32"]}},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.23.4/blame.html#git_object_id-10","ex/v0.23.4/blame.html#git_object_id-11","ex/v0.23.4/blame.html#git_object_id-12","ex/v0.23.4/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_id-12","ex/v0.23.4/cat-file.html#git_object_id-13"],"log.c":["ex/v0.23.4/log.html#git_object_id-33","ex/v0.23.4/log.html#git_object_id-34","ex/v0.23.4/log.html#git_object_id-35","ex/v0.23.4/log.html#git_object_id-36"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_object_id-4","ex/v0.23.4/rev-parse.html#git_object_id-5","ex/v0.23.4/rev-parse.html#git_object_id-6","ex/v0.23.4/rev-parse.html#git_object_id-7","ex/v0.23.4/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.23.4/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_type-14","ex/v0.23.4/cat-file.html#git_object_type-15","ex/v0.23.4/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.23.4/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.23.4/blame.html#git_object_free-14","ex/v0.23.4/blame.html#git_object_free-15","ex/v0.23.4/blame.html#git_object_free-16","ex/v0.23.4/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_free-17"],"general.c":["ex/v0.23.4/general.html#git_object_free-29"],"log.c":["ex/v0.23.4/log.html#git_object_free-37"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_object_free-9","ex/v0.23.4/rev-parse.html#git_object_free-10","ex/v0.23.4/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.23.4/tag.html#git_object_free-7","ex/v0.23.4/tag.html#git_object_free-8","ex/v0.23.4/tag.html#git_object_free-9","ex/v0.23.4/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_object_type2string-18","ex/v0.23.4/cat-file.html#git_object_type2string-19","ex/v0.23.4/cat-file.html#git_object_type2string-20","ex/v0.23.4/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.23.4/general.html#git_object_type2string-30"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.23.4/general.html#git_odb_read-31"]}},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.23.4/general.html#git_odb_object_free-32"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.23.4/general.html#git_odb_object_data-33"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.23.4/general.html#git_odb_object_type-34"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.23.4/general.html#git_oid_fromstr-35","ex/v0.23.4/general.html#git_oid_fromstr-36","ex/v0.23.4/general.html#git_oid_fromstr-37","ex/v0.23.4/general.html#git_oid_fromstr-38","ex/v0.23.4/general.html#git_oid_fromstr-39","ex/v0.23.4/general.html#git_oid_fromstr-40","ex/v0.23.4/general.html#git_oid_fromstr-41","ex/v0.23.4/general.html#git_oid_fromstr-42"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.23.4/general.html#git_oid_fmt-43","ex/v0.23.4/general.html#git_oid_fmt-44","ex/v0.23.4/general.html#git_oid_fmt-45","ex/v0.23.4/general.html#git_oid_fmt-46","ex/v0.23.4/general.html#git_oid_fmt-47"],"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_oid_fmt-1","ex/v0.23.4/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.23.4/network/index-pack.html#git_oid_fmt-5"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.23.4/blame.html#git_oid_cpy-18","ex/v0.23.4/blame.html#git_oid_cpy-19","ex/v0.23.4/blame.html#git_oid_cpy-20"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.23.4/blame.html#git_oid_iszero-21"],"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_new-38"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_free-39"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.23.4/log.html#git_pathspec_match_tree-40"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":141,"lineto":143,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":162,"lineto":168,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":179,"lineto":182,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":251,"lineto":257,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":267,"lineto":267,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":277,"lineto":279,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":286,"lineto":286,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_lookup-48"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_target-49"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_symbolic_target-50"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_type-51"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.23.4/general.html#git_reference_list-52"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.23.4/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.23.4/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.23.4/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":246,"lineto":246,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks","sig":"git_remote *::git_direction::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_connect-6"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":279,"lineto":279,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":289,"lineto":289,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":298,"lineto":298,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_disconnect-7"]}},"git_remote_free":{"type":"function","file":"remote.h","line":308,"lineto":308,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_free-8","ex/v0.23.4/network/fetch.html#git_remote_free-9"],"network/ls-remote.c":["ex/v0.23.4/network/ls-remote.html#git_remote_free-5"],"remote.c":["ex/v0.23.4/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":319,"lineto":319,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":470,"lineto":472,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":563,"lineto":565,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":602,"lineto":604,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":622,"lineto":622,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_download-10"]}},"git_remote_upload":{"type":"function","file":"remote.h","line":636,"lineto":636,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":652,"lineto":657,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_update_tips-11"]}},"git_remote_fetch":{"type":"function","file":"remote.h","line":673,"lineto":677,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote"},"git_remote_prune":{"type":"function","file":"remote.h","line":686,"lineto":686,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":698,"lineto":700,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":705,"lineto":705,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.23.4/network/fetch.html#git_remote_stats-12"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":713,"lineto":713,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":725,"lineto":725,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":732,"lineto":732,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":754,"lineto":758,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":766,"lineto":766,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":778,"lineto":778,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.23.4/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":796,"lineto":796,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.23.4/general.html#git_repository_open-53"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.23.4/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.23.4/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.23.4/blame.html#git_repository_open_ext-22"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_open_ext-25"],"describe.c":["ex/v0.23.4/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.23.4/diff.html#git_repository_open_ext-14"],"log.c":["ex/v0.23.4/log.html#git_repository_open_ext-41","ex/v0.23.4/log.html#git_repository_open_ext-42"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_repository_open_ext-12"],"status.c":["ex/v0.23.4/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.23.4/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.23.4/blame.html#git_repository_free-23"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_free-26"],"describe.c":["ex/v0.23.4/describe.html#git_repository_free-7"],"diff.c":["ex/v0.23.4/diff.html#git_repository_free-15"],"general.c":["ex/v0.23.4/general.html#git_repository_free-54"],"init.c":["ex/v0.23.4/init.html#git_repository_free-5"],"log.c":["ex/v0.23.4/log.html#git_repository_free-43"],"network/clone.c":["ex/v0.23.4/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.23.4/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_repository_free-13"],"status.c":["ex/v0.23.4/status.html#git_repository_free-6"],"tag.c":["ex/v0.23.4/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_init-6"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_init_ext-7"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.23.4/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_path-8"],"status.c":["ex/v0.23.4/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.23.4/init.html#git_repository_workdir-9"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.23.4/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_repository_odb-27"],"general.c":["ex/v0.23.4/general.html#git_repository_odb-55"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.23.4/general.html#git_repository_index-56"],"init.c":["ex/v0.23.4/init.html#git_repository_index-10"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":694,"lineto":694,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":708,"lineto":708,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":716,"lineto":716,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":725,"lineto":725,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":750,"lineto":750,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.23.4/blame.html#git_revparse_single-24"],"cat-file.c":["ex/v0.23.4/cat-file.html#git_revparse_single-28"],"describe.c":["ex/v0.23.4/describe.html#git_revparse_single-8"],"log.c":["ex/v0.23.4/log.html#git_revparse_single-44"],"tag.c":["ex/v0.23.4/tag.html#git_revparse_single-13","ex/v0.23.4/tag.html#git_revparse_single-14","ex/v0.23.4/tag.html#git_revparse_single-15","ex/v0.23.4/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.23.4/blame.html#git_revparse-25"],"log.c":["ex/v0.23.4/log.html#git_revparse-45"],"rev-parse.c":["ex/v0.23.4/rev-parse.html#git_revparse-14","ex/v0.23.4/rev-parse.html#git_revparse-15"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_new-57"],"log.c":["ex/v0.23.4/log.html#git_revwalk_new-46","ex/v0.23.4/log.html#git_revwalk_new-47"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_push-58"],"log.c":["ex/v0.23.4/log.html#git_revwalk_push-48"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.23.4/log.html#git_revwalk_push_head-49"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.23.4/log.html#git_revwalk_hide-50"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_next-59"],"log.c":["ex/v0.23.4/log.html#git_revwalk_next-51"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_sorting-60"],"log.c":["ex/v0.23.4/log.html#git_revwalk_sorting-52","ex/v0.23.4/log.html#git_revwalk_sorting-53"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.23.4/general.html#git_revwalk_free-61"],"log.c":["ex/v0.23.4/log.html#git_revwalk_free-54"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.23.4/general.html#git_signature_new-62","ex/v0.23.4/general.html#git_signature_new-63"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.23.4/init.html#git_signature_default-11"],"tag.c":["ex/v0.23.4/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.23.4/init.html#git_signature_free-12"],"tag.c":["ex/v0.23.4/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_list_new-12","ex/v0.23.4/status.html#git_status_list_new-13"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.23.4/status.html#git_status_list_free-14"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.23.4/general.html#git_strarray_free-64"],"remote.c":["ex/v0.23.4/remote.html#git_strarray_free-16","ex/v0.23.4/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.23.4/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":162,"lineto":163,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":181,"lineto":181,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":220,"lineto":220,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":240,"lineto":243,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"int (*)(git_submodule *, const char *, void *)","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, int (*)(git_submodule *, const char *, void *) callback, void *payload","sig":"git_repository *::int (*)(git_submodule *, const char *, void *)::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_foreach-15"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":270,"lineto":275,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":287,"lineto":287,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":299,"lineto":301,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":314,"lineto":314,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":322,"lineto":322,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_name-16"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_path-17"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":351,"lineto":351,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":359,"lineto":359,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":372,"lineto":372,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":386,"lineto":386,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":394,"lineto":394,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":402,"lineto":402,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":415,"lineto":415,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":440,"lineto":441,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":453,"lineto":456,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":468,"lineto":469,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":481,"lineto":484,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":497,"lineto":498,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":510,"lineto":513,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":528,"lineto":528,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":543,"lineto":546,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":556,"lineto":556,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":570,"lineto":572,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":584,"lineto":584,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":600,"lineto":604,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.23.4/status.html#git_submodule_status-18"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":620,"lineto":622,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":83,"lineto":85,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":105,"lineto":109,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":289,"lineto":290,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":305,"lineto":305,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":100,"lineto":102,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":182,"lineto":184,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":197,"lineto":199,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":211,"lineto":213,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":112,"lineto":114,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":126,"lineto":126,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":142,"lineto":142,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":170,"lineto":171,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":184,"lineto":187,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":197,"lineto":200,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":210,"lineto":213,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":323,"lineto":326,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":335,"lineto":338,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":347,"lineto":350,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.23.4/general.html#git_tag_lookup-65"]}},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.23.4/general.html#git_tag_target-66"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_target_id-29"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_target_type-30"],"general.c":["ex/v0.23.4/general.html#git_tag_target_type-67"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_name-31"],"general.c":["ex/v0.23.4/general.html#git_tag_name-68"],"tag.c":["ex/v0.23.4/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_tagger-32"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tag_message-33","ex/v0.23.4/cat-file.html#git_tag_message-34"],"general.c":["ex/v0.23.4/general.html#git_tag_message-69"],"tag.c":["ex/v0.23.4/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.23.4/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":197,"lineto":197,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":208,"lineto":211,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":224,"lineto":229,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":240,"lineto":244,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":254,"lineto":256,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":290,"lineto":290,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":298,"lineto":298,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":310,"lineto":315,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_lookup-70","ex/v0.23.4/general.html#git_tree_lookup-71"],"init.c":["ex/v0.23.4/init.html#git_tree_lookup-13"]}},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.23.4/diff.html#git_tree_free-16","ex/v0.23.4/diff.html#git_tree_free-17"],"init.c":["ex/v0.23.4/init.html#git_tree_free-14"],"log.c":["ex/v0.23.4/log.html#git_tree_free-55","ex/v0.23.4/log.html#git_tree_free-56","ex/v0.23.4/log.html#git_tree_free-57","ex/v0.23.4/log.html#git_tree_free-58","ex/v0.23.4/log.html#git_tree_free-59"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_entry_byname-72"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_name-35"],"general.c":["ex/v0.23.4/general.html#git_tree_entry_name-73","ex/v0.23.4/general.html#git_tree_entry_name-74"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_id-36"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_type-37"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.23.4/cat-file.html#git_tree_entry_filemode-38"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.23.4/general.html#git_tree_entry_to_object-75"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"int","comment":null},{"name":"total_steps","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, int completed_steps, int total_steps, void *payload","sig":"const char *::int::int::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":343,"lineto":347,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":423,"lineto":426,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":470,"lineto":473,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":490,"lineto":493,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":543,"lineto":547,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":332,"lineto":336,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, int bytes, void *payload","sig":"unsigned int::unsigned int::int::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":365,"lineto":365,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"int","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, int len, void *payload","sig":"const git_push_update **::int::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"int","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"int index, const char *message, const int *stash_id, void *payload","sig":"int::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":152,"lineto":152,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":164,"lineto":164,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":186,"lineto":190,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":204,"lineto":209,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":226,"lineto":228,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":329,"lineto":334,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["uint16_t lines_in_hunk","git_oid final_commit_id","uint16_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","uint16_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"uint16_t lines_in_hunk\ngit_oid final_commit_id\nuint16_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nuint16_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"uint16_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"uint16_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"uint16_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","uint32_t min_line","uint32_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nuint32_t min_line\nuint32_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"uint32_t","name":"min_line","comments":""},{"type":"uint32_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb"]}}],["git_cert_hostkey",{"decl":["git_cert_t cert_type","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":62,"block":"git_cert_t cert_type\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. Here to share the header with\n `git_cert`."},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":61,"lineto":67,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":56,"block":"GIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":183,"lineto":183,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":163,"lineto":168,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":152,"lineto":158,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":186,"lineto":189,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":129,"lineto":133,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":88,"lineto":118,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":90,"lineto":94,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":80,"lineto":85,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":242,"lineto":254,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":215,"lineto":215,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_patch_get_delta"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blobs","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blobs","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":434,"lineto":443,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":321,"lineto":328,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_patch_get_delta"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":277,"lineto":283,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blobs","git_diff_foreach"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":552,"lineto":621,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":225,"lineto":230,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1218,"lineto":1225,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":981,"lineto":987,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":504,"lineto":520,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":205,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags means to\n  apply it as an exact match instead of as an fnmatch pattern.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":626,"lineto":636,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, int, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, int, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1132,"lineto":1132,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_free"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1137,"lineto":1152,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":63,"lineto":66,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":["giterr_detach"]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":55,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":69,"lineto":101,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH"],"type":"enum","file":"common.h","line":102,"lineto":106,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":522,"lineto":549,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":248,"lineto":259,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n\n<p><code>version</code> should be set to GIT_FILTER_VERSION</p>\n\n<p><code>attributes</code> is a whitespace-separated list of attribute names to check for this filter (e.g. &quot;eol crlf text&quot;).  If the attribute name is bare, it will be simply loaded and passed to the <code>check</code> callback.  If it has a value (i.e. &quot;name=value&quot;), the attribute must match that value for the filter to be applied.</p>\n\n<p>The <code>initialize</code>, <code>shutdown</code>, <code>check</code>, <code>apply</code>, and <code>cleanup</code> callbacks are all documented above with the respective function pointer typedefs.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"attributes","comments":""},{"type":"git_filter_init_fn","name":"initialize","comments":""},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":""},{"type":"git_filter_check_fn","name":"check","comments":""},{"type":"git_filter_apply_fn","name":"apply","comments":""},{"type":"git_filter_stream_fn","name":"stream","comments":""},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":""}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_bypath"],"needs":["git_index_add","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS"],"type":"enum","file":"common.h","line":134,"lineto":148,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":272,"lineto":301,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":81,"lineto":111,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flags_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":116,"lineto":143,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","unsigned int flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":148,"lineto":174,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\nunsigned int flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"unsigned int","name":"flags","comments":" see `git_merge_file_flags_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_tree_flag_t tree_flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","git_merge_file_favor_t file_favor","unsigned int file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":221,"lineto":251,"block":"unsigned int version\ngit_merge_tree_flag_t tree_flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\ngit_merge_file_favor_t file_favor\nunsigned int file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_tree_flag_t","name":"tree_flags","comments":""},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_TREE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"unsigned int","name":"file_flags","comments":" see `git_merge_file_flags_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":306,"lineto":324,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_merge_tree_flag_t",{"decl":["GIT_MERGE_TREE_FIND_RENAMES"],"type":"enum","file":"merge.h","line":68,"lineto":75,"block":"GIT_MERGE_TREE_FIND_RENAMES","tdef":"typedef","description":" Flags for `git_merge_tree` options.  A combination of these flags can be\n passed in via the `tree_flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_TREE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_read"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, int) read\nint (*)(git_odb_stream *, const char *, int) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, int)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, int)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, int, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, int, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_bases","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_odb_exists","git_odb_foreach_cb","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_stream_finalize_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tree_entry_byid","git_tree_lookup","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":[],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object_lookup","git_object_lookup_bypath","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hashfile","git_odb_open_wstream","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks"],"type":"struct","value":"git_push_options","file":"remote.h","line":571,"lineto":588,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":340,"lineto":357,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":[],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_next","git_rebase_open"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":115,"lineto":130,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":[],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":64,"lineto":100,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference from the refdb.  A refdb implementation\n must provide this function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb.  A refdb implementation may\n provide this function; if it is not provided, nothing will be done."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":[],"needs":["git_reflog_append","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":[],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_lookup","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":494,"lineto":512,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":373,"lineto":457,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":325,"lineto":329,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_blame_file","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_lookup","git_describe_workdir","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge_base","git_merge_bases","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_foreach","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tree_entry_to_object","git_tree_lookup","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":685,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":9}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create_from_callback","git_commit_create_from_ids","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":297,"lineto":310,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":[]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":[]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_value"]],["blame",["git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_is_binary"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_committer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_has_username","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blobs","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_free","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_detach","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_free","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge_base","git_merge_bases","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_foreach","git_odb_free","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrp","git_oid_iszero","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blobs","git_patch_get_delta","git_patch_print","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_next","git_rebase_open"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply_init_options","git_stash_foreach"]],["status",["git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_free","git_tree_id","git_tree_lookup","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.23.4/add.html"],["blame.c","ex/v0.23.4/blame.html"],["cat-file.c","ex/v0.23.4/cat-file.html"],["common.c","ex/v0.23.4/common.html"],["describe.c","ex/v0.23.4/describe.html"],["diff.c","ex/v0.23.4/diff.html"],["for-each-ref.c","ex/v0.23.4/for-each-ref.html"],["general.c","ex/v0.23.4/general.html"],["init.c","ex/v0.23.4/init.html"],["log.c","ex/v0.23.4/log.html"],["network/clone.c","ex/v0.23.4/network/clone.html"],["network/common.c","ex/v0.23.4/network/common.html"],["network/fetch.c","ex/v0.23.4/network/fetch.html"],["network/git2.c","ex/v0.23.4/network/git2.html"],["network/index-pack.c","ex/v0.23.4/network/index-pack.html"],["network/ls-remote.c","ex/v0.23.4/network/ls-remote.html"],["remote.c","ex/v0.23.4/remote.html"],["rev-list.c","ex/v0.23.4/rev-list.html"],["rev-parse.c","ex/v0.23.4/rev-parse.html"],["showindex.c","ex/v0.23.4/showindex.html"],["status.c","ex/v0.23.4/status.html"],["tag.c","ex/v0.23.4/tag.html"]]}
\ No newline at end of file
diff --git a/v0.24.1.json b/v0.24.1.json
index a449875..0bfd872 100644
--- a/v0.24.1.json
+++ b/v0.24.1.json
@@ -1 +1 @@
-{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_create_frombuffer","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":354},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend"],"meta":{},"lines":395},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":282},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1346},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":144},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":780},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":569},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":491},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":807},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":752},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":633},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":106},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":53},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":377},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.1/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.1/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.1/general.html#git_blob_rawsize-3","ex/v0.24.1/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return 0.    This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":203,"lineto":204,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.1/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.1/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.1/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":322,"lineto":324,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":335,"lineto":338,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":351,"lineto":354,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.1/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_lookup-5","ex/v0.24.1/general.html#git_commit_lookup-6","ex/v0.24.1/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.1/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_free-8","ex/v0.24.1/general.html#git_commit_free-9","ex/v0.24.1/general.html#git_commit_free-10","ex/v0.24.1/general.html#git_commit_free-11"],"log.c":["ex/v0.24.1/log.html#git_commit_free-2","ex/v0.24.1/log.html#git_commit_free-3","ex/v0.24.1/log.html#git_commit_free-4","ex/v0.24.1/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_id-12"],"log.c":["ex/v0.24.1/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.1/log.html#git_commit_owner-7","ex/v0.24.1/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_message-3","ex/v0.24.1/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.1/general.html#git_commit_message-13","ex/v0.24.1/general.html#git_commit_message-14","ex/v0.24.1/general.html#git_commit_message-15"],"log.c":["ex/v0.24.1/log.html#git_commit_message-9","ex/v0.24.1/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.1/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_time-16","ex/v0.24.1/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.1/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.1/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.1/general.html#git_commit_author-19","ex/v0.24.1/general.html#git_commit_author-20"],"log.c":["ex/v0.24.1/log.html#git_commit_author-12","ex/v0.24.1/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.1/log.html#git_commit_tree-14","ex/v0.24.1/log.html#git_commit_tree-15","ex/v0.24.1/log.html#git_commit_tree-16","ex/v0.24.1/log.html#git_commit_tree-17","ex/v0.24.1/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.1/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.1/log.html#git_commit_parentcount-19","ex/v0.24.1/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.1/log.html#git_commit_parent-21","ex/v0.24.1/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.1/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.1/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":282,"lineto":282,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to disabled.  * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":435,"lineto":437,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":720,"lineto":722,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":736,"lineto":736,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.1/log.html#git_diff_free-24","ex/v0.24.1/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":754,"lineto":759,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.1/log.html#git_diff_tree_to_tree-26","ex/v0.24.1/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":780,"lineto":785,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":807,"lineto":811,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":836,"lineto":840,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":855,"lineto":859,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":873,"lineto":878,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":893,"lineto":895,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.1/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":942,"lineto":943,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":962,"lineto":963,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":971,"lineto":971,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":999,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1018,"lineto":1018,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1043,"lineto":1047,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.1/log.html#git_diff_print-29"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1084,"lineto":1094,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1121,"lineto":1132,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1155,"lineto":1167,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1203,"lineto":1205,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1213,"lineto":1214,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1222,"lineto":1223,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1231,"lineto":1232,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1243,"lineto":1247,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1255,"lineto":1255,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1307,"lineto":1310,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1326,"lineto":1333,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1344,"lineto":1346,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":110,"lineto":110,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.1/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.1/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.1/network/git2.html#giterr_last-1","ex/v0.24.1/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":133,"lineto":133,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":144,"lineto":144,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.1/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.1/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.1/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.1/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.1/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.1/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.1/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.1/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.1/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.1/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.1/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.1/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.1/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.1/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.1/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.1/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.1/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_free-29"],"init.c":["ex/v0.24.1/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":271,"lineto":271,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":280,"lineto":280,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":288,"lineto":288,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":300,"lineto":300,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":311,"lineto":311,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":332,"lineto":332,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.1/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":349,"lineto":349,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":368,"lineto":368,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":379,"lineto":379,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":392,"lineto":393,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":407,"lineto":408,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":418,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":428,"lineto":429,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":445,"lineto":445,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":457,"lineto":457,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":466,"lineto":466,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":497,"lineto":497,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":526,"lineto":529,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":545,"lineto":545,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":592,"lineto":597,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":614,"lineto":618,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":643,"lineto":647,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":658,"lineto":658,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":669,"lineto":669,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":694,"lineto":698,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":714,"lineto":719,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":728,"lineto":728,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":736,"lineto":736,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":743,"lineto":743,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":754,"lineto":756,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":768,"lineto":772,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":779,"lineto":780,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":295,"lineto":297,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":366,"lineto":371,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":382,"lineto":386,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.1/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":397,"lineto":401,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":412,"lineto":416,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":427,"lineto":431,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":442,"lineto":446,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":464,"lineto":469,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":485,"lineto":491,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":498,"lineto":498,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":516,"lineto":522,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":539,"lineto":544,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":564,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.1/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.1/blame.html#git_object_id-10","ex/v0.24.1/blame.html#git_object_id-11","ex/v0.24.1/blame.html#git_object_id-12","ex/v0.24.1/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_id-12","ex/v0.24.1/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.1/log.html#git_object_id-34","ex/v0.24.1/log.html#git_object_id-35","ex/v0.24.1/log.html#git_object_id-36","ex/v0.24.1/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_object_id-4","ex/v0.24.1/rev-parse.html#git_object_id-5","ex/v0.24.1/rev-parse.html#git_object_id-6","ex/v0.24.1/rev-parse.html#git_object_id-7","ex/v0.24.1/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.1/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_type-14","ex/v0.24.1/cat-file.html#git_object_type-15","ex/v0.24.1/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.1/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.1/blame.html#git_object_free-14","ex/v0.24.1/blame.html#git_object_free-15","ex/v0.24.1/blame.html#git_object_free-16","ex/v0.24.1/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.1/general.html#git_object_free-32"],"log.c":["ex/v0.24.1/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_object_free-9","ex/v0.24.1/rev-parse.html#git_object_free-10","ex/v0.24.1/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.1/tag.html#git_object_free-7","ex/v0.24.1/tag.html#git_object_free-8","ex/v0.24.1/tag.html#git_object_free-9","ex/v0.24.1/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_type2string-18","ex/v0.24.1/cat-file.html#git_object_type2string-19","ex/v0.24.1/cat-file.html#git_object_type2string-20","ex/v0.24.1/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.1/general.html#git_object_type2string-33"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.1/general.html#git_odb_read-34"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":128,"lineto":128,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":148,"lineto":148,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":171,"lineto":172,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if objects can be found in the object database from a short OID.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_write-35"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":263,"lineto":263,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":285,"lineto":285,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":356,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.1/general.html#git_odb_object_free-36"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_object_data-37"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":429,"lineto":429,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.1/general.html#git_odb_object_size-38"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_object_type-39"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":481,"lineto":481,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":491,"lineto":491,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.1/general.html#git_oid_fromstr-40","ex/v0.24.1/general.html#git_oid_fromstr-41","ex/v0.24.1/general.html#git_oid_fromstr-42","ex/v0.24.1/general.html#git_oid_fromstr-43","ex/v0.24.1/general.html#git_oid_fromstr-44","ex/v0.24.1/general.html#git_oid_fromstr-45","ex/v0.24.1/general.html#git_oid_fromstr-46","ex/v0.24.1/general.html#git_oid_fromstr-47"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.1/general.html#git_oid_fmt-48","ex/v0.24.1/general.html#git_oid_fmt-49","ex/v0.24.1/general.html#git_oid_fmt-50","ex/v0.24.1/general.html#git_oid_fmt-51","ex/v0.24.1/general.html#git_oid_fmt-52"],"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_oid_fmt-1","ex/v0.24.1/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_tostr-18","ex/v0.24.1/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_oid_tostr-26","ex/v0.24.1/cat-file.html#git_oid_tostr-27","ex/v0.24.1/cat-file.html#git_oid_tostr-28","ex/v0.24.1/cat-file.html#git_oid_tostr-29","ex/v0.24.1/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.1/log.html#git_oid_tostr-39","ex/v0.24.1/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_oid_tostr-12","ex/v0.24.1/rev-parse.html#git_oid_tostr-13","ex/v0.24.1/rev-parse.html#git_oid_tostr-14","ex/v0.24.1/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_cpy-20","ex/v0.24.1/blame.html#git_oid_cpy-21","ex/v0.24.1/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or -1 if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_lookup-53"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_target-54"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_symbolic_target-55"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_type-56"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_list-57"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.1/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":676,"lineto":680,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.1/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.1/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":222,"lineto":222,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":231,"lineto":231,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_free-6","ex/v0.24.1/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.1/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":471,"lineto":473,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":569,"lineto":571,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":613,"lineto":615,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":633,"lineto":633,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":647,"lineto":647,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":663,"lineto":668,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":684,"lineto":688,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":697,"lineto":697,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":709,"lineto":711,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":716,"lineto":716,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":724,"lineto":724,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":736,"lineto":736,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":743,"lineto":743,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":765,"lineto":769,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":777,"lineto":777,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":789,"lineto":789,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":807,"lineto":807,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.1/general.html#git_repository_open-58"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.1/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.1/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.1/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.1/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.1/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.1/log.html#git_repository_open_ext-44","ex/v0.24.1/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.1/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.1/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.1/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.1/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.1/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.1/general.html#git_repository_free-59"],"init.c":["ex/v0.24.1/init.html#git_repository_free-6"],"log.c":["ex/v0.24.1/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.1/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.1/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.1/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.1/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_path-9"],"status.c":["ex/v0.24.1/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.1/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.1/general.html#git_repository_odb-60"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.1/general.html#git_repository_index-61"],"init.c":["ex/v0.24.1/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":696,"lineto":696,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":710,"lineto":710,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":718,"lineto":718,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":727,"lineto":727,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":739,"lineto":739,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":752,"lineto":752,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.1/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.1/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.1/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.1/tag.html#git_revparse_single-13","ex/v0.24.1/tag.html#git_revparse_single-14","ex/v0.24.1/tag.html#git_revparse_single-15","ex/v0.24.1/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.1/blame.html#git_revparse-27"],"log.c":["ex/v0.24.1/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_revparse-18","ex/v0.24.1/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_new-62"],"log.c":["ex/v0.24.1/log.html#git_revwalk_new-49","ex/v0.24.1/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_push-63"],"log.c":["ex/v0.24.1/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.1/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.1/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_next-64"],"log.c":["ex/v0.24.1/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_sorting-65"],"log.c":["ex/v0.24.1/log.html#git_revwalk_sorting-55","ex/v0.24.1/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_free-66"],"log.c":["ex/v0.24.1/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.1/general.html#git_signature_new-67","ex/v0.24.1/general.html#git_signature_new-68"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.1/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.1/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.1/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.1/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_new-12","ex/v0.24.1/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_entrycount-14","ex/v0.24.1/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_byindex-16","ex/v0.24.1/status.html#git_status_byindex-17","ex/v0.24.1/status.html#git_status_byindex-18","ex/v0.24.1/status.html#git_status_byindex-19","ex/v0.24.1/status.html#git_status_byindex-20","ex/v0.24.1/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.1/general.html#git_strarray_free-69"],"remote.c":["ex/v0.24.1/remote.html#git_strarray_free-16","ex/v0.24.1/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.1/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":173,"lineto":174,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":192,"lineto":192,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":221,"lineto":224,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":231,"lineto":231,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":251,"lineto":254,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":281,"lineto":286,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":310,"lineto":312,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":325,"lineto":325,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":344,"lineto":344,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":362,"lineto":362,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":383,"lineto":383,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":397,"lineto":397,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":426,"lineto":426,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":451,"lineto":452,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":464,"lineto":467,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":479,"lineto":480,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":492,"lineto":495,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":508,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":521,"lineto":524,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":539,"lineto":539,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":554,"lineto":557,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":567,"lineto":567,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":581,"lineto":583,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":595,"lineto":595,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":611,"lineto":615,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":631,"lineto":633,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":104,"lineto":106,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":53,"lineto":53,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":117,"lineto":119,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":131,"lineto":131,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":175,"lineto":176,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":189,"lineto":192,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":202,"lineto":205,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":215,"lineto":218,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":229,"lineto":229,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":350,"lineto":353,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":374,"lineto":377,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.1/general.html#git_tag_lookup-70"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.1/general.html#git_tag_target-71"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.1/general.html#git_tag_target_type-72"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.1/general.html#git_tag_name-73"],"tag.c":["ex/v0.24.1/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_message-39","ex/v0.24.1/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.1/general.html#git_tag_message-74"],"tag.c":["ex/v0.24.1/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_lookup-75","ex/v0.24.1/general.html#git_tree_lookup-76"],"init.c":["ex/v0.24.1/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.1/diff.html#git_tree_free-17","ex/v0.24.1/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.1/init.html#git_tree_free-15"],"log.c":["ex/v0.24.1/log.html#git_tree_free-58","ex/v0.24.1/log.html#git_tree_free-59","ex/v0.24.1/log.html#git_tree_free-60","ex/v0.24.1/log.html#git_tree_free-61","ex/v0.24.1/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.1/general.html#git_tree_entrycount-77"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_entry_byname-78"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.1/general.html#git_tree_entry_byindex-79"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.1/general.html#git_tree_entry_name-80","ex/v0.24.1/general.html#git_tree_entry_name-81"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_entry_to_object-82"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":347,"lineto":351,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":363,"lineto":367,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":446,"lineto":449,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":493,"lineto":496,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":513,"lineto":516,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":566,"lineto":570,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":366,"lineto":366,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":484,"lineto":487,"block":"git_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":469,"lineto":481,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":457,"lineto":466,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":325,"lineto":332,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":281,"lineto":287,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":681,"lineto":707,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":575,"lineto":644,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1260,"lineto":1267,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1272,"lineto":1294,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1023,"lineto":1029,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":501,"lineto":508,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":" Starting line number in old_file "},{"type":"int","name":"old_lines","comments":" Number of lines in old_file "},{"type":"int","name":"new_start","comments":" Starting line number in new_file "},{"type":"int","name":"new_lines","comments":" Number of lines in new_file "},{"type":"size_t","name":"header_len","comments":" Number of bytes in header text "},{"type":"char [128]","name":"header","comments":" Header text, NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":548,"lineto":556,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":527,"lineto":543,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":396,"lineto":416,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":649,"lineto":659,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1174,"lineto":1174,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1179,"lineto":1194,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":70,"lineto":102,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":523,"lineto":555,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS"],"type":"enum","file":"common.h","line":144,"lineto":161,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":302,"lineto":331,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":281,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":336,"lineto":354,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":577,"lineto":599,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":495,"lineto":513,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":374,"lineto":458,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":687,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":324,"lineto":337,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":157,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.1/add.html"],["blame.c","ex/v0.24.1/blame.html"],["cat-file.c","ex/v0.24.1/cat-file.html"],["common.c","ex/v0.24.1/common.html"],["describe.c","ex/v0.24.1/describe.html"],["diff.c","ex/v0.24.1/diff.html"],["for-each-ref.c","ex/v0.24.1/for-each-ref.html"],["general.c","ex/v0.24.1/general.html"],["init.c","ex/v0.24.1/init.html"],["log.c","ex/v0.24.1/log.html"],["network/clone.c","ex/v0.24.1/network/clone.html"],["network/common.c","ex/v0.24.1/network/common.html"],["network/fetch.c","ex/v0.24.1/network/fetch.html"],["network/git2.c","ex/v0.24.1/network/git2.html"],["network/index-pack.c","ex/v0.24.1/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.1/network/ls-remote.html"],["remote.c","ex/v0.24.1/remote.html"],["rev-list.c","ex/v0.24.1/rev-list.html"],["rev-parse.c","ex/v0.24.1/rev-parse.html"],["showindex.c","ex/v0.24.1/showindex.html"],["status.c","ex/v0.24.1/status.html"],["tag.c","ex/v0.24.1/tag.html"]]}
\ No newline at end of file
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_create_frombuffer","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend"],"meta":{},"lines":395},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":282},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1346},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":144},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":780},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":569},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":491},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":807},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":752},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":633},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":106},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":53},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":377},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.1/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.1/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.1/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.1/general.html#git_blob_rawsize-3","ex/v0.24.1/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return 0.    This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":203,"lineto":204,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.1/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.1/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.1/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.1/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_lookup-5","ex/v0.24.1/general.html#git_commit_lookup-6","ex/v0.24.1/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.1/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_free-8","ex/v0.24.1/general.html#git_commit_free-9","ex/v0.24.1/general.html#git_commit_free-10","ex/v0.24.1/general.html#git_commit_free-11"],"log.c":["ex/v0.24.1/log.html#git_commit_free-2","ex/v0.24.1/log.html#git_commit_free-3","ex/v0.24.1/log.html#git_commit_free-4","ex/v0.24.1/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_id-12"],"log.c":["ex/v0.24.1/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.1/log.html#git_commit_owner-7","ex/v0.24.1/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_message-3","ex/v0.24.1/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.1/general.html#git_commit_message-13","ex/v0.24.1/general.html#git_commit_message-14","ex/v0.24.1/general.html#git_commit_message-15"],"log.c":["ex/v0.24.1/log.html#git_commit_message-9","ex/v0.24.1/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.1/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_time-16","ex/v0.24.1/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.1/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.1/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.1/general.html#git_commit_author-19","ex/v0.24.1/general.html#git_commit_author-20"],"log.c":["ex/v0.24.1/log.html#git_commit_author-12","ex/v0.24.1/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.1/log.html#git_commit_tree-14","ex/v0.24.1/log.html#git_commit_tree-15","ex/v0.24.1/log.html#git_commit_tree-16","ex/v0.24.1/log.html#git_commit_tree-17","ex/v0.24.1/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.1/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.1/log.html#git_commit_parentcount-19","ex/v0.24.1/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.1/log.html#git_commit_parent-21","ex/v0.24.1/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.1/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.1/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.1/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":282,"lineto":282,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to disabled.  * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.1/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.1/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":435,"lineto":437,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":720,"lineto":722,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":736,"lineto":736,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.1/log.html#git_diff_free-24","ex/v0.24.1/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":754,"lineto":759,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.1/log.html#git_diff_tree_to_tree-26","ex/v0.24.1/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":780,"lineto":785,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":807,"lineto":811,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":836,"lineto":840,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":855,"lineto":859,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":873,"lineto":878,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":893,"lineto":895,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.1/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":942,"lineto":943,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":962,"lineto":963,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":971,"lineto":971,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":999,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1018,"lineto":1018,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1043,"lineto":1047,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.1/log.html#git_diff_print-29"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1084,"lineto":1094,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1121,"lineto":1132,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1155,"lineto":1167,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1203,"lineto":1205,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1213,"lineto":1214,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1222,"lineto":1223,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1231,"lineto":1232,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1243,"lineto":1247,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1255,"lineto":1255,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.1/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1307,"lineto":1310,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1326,"lineto":1333,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1344,"lineto":1346,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":110,"lineto":110,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.1/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.1/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.1/network/git2.html#giterr_last-1","ex/v0.24.1/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":133,"lineto":133,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":144,"lineto":144,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.1/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.1/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.1/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.1/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.1/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.1/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.1/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.1/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.1/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.1/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.1/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.1/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.1/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.1/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.1/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.1/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.1/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_free-29"],"init.c":["ex/v0.24.1/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":271,"lineto":271,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":280,"lineto":280,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":288,"lineto":288,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":300,"lineto":300,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":311,"lineto":311,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":332,"lineto":332,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.1/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":349,"lineto":349,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":368,"lineto":368,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":379,"lineto":379,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":392,"lineto":393,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.1/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":407,"lineto":408,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":418,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":428,"lineto":429,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":445,"lineto":445,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":457,"lineto":457,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":466,"lineto":466,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":497,"lineto":497,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":526,"lineto":529,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":545,"lineto":545,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":592,"lineto":597,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":614,"lineto":618,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":643,"lineto":647,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":658,"lineto":658,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":669,"lineto":669,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":694,"lineto":698,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":714,"lineto":719,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":728,"lineto":728,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":736,"lineto":736,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":743,"lineto":743,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":754,"lineto":756,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":768,"lineto":772,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":779,"lineto":780,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":295,"lineto":297,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":366,"lineto":371,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":382,"lineto":386,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.1/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":397,"lineto":401,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":412,"lineto":416,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":427,"lineto":431,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":442,"lineto":446,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":464,"lineto":469,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":485,"lineto":491,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":498,"lineto":498,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":516,"lineto":522,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":539,"lineto":544,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":564,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.1/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.1/blame.html#git_object_id-10","ex/v0.24.1/blame.html#git_object_id-11","ex/v0.24.1/blame.html#git_object_id-12","ex/v0.24.1/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_id-12","ex/v0.24.1/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.1/log.html#git_object_id-34","ex/v0.24.1/log.html#git_object_id-35","ex/v0.24.1/log.html#git_object_id-36","ex/v0.24.1/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_object_id-4","ex/v0.24.1/rev-parse.html#git_object_id-5","ex/v0.24.1/rev-parse.html#git_object_id-6","ex/v0.24.1/rev-parse.html#git_object_id-7","ex/v0.24.1/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.1/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_type-14","ex/v0.24.1/cat-file.html#git_object_type-15","ex/v0.24.1/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.1/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.1/blame.html#git_object_free-14","ex/v0.24.1/blame.html#git_object_free-15","ex/v0.24.1/blame.html#git_object_free-16","ex/v0.24.1/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.1/general.html#git_object_free-32"],"log.c":["ex/v0.24.1/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_object_free-9","ex/v0.24.1/rev-parse.html#git_object_free-10","ex/v0.24.1/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.1/tag.html#git_object_free-7","ex/v0.24.1/tag.html#git_object_free-8","ex/v0.24.1/tag.html#git_object_free-9","ex/v0.24.1/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_object_type2string-18","ex/v0.24.1/cat-file.html#git_object_type2string-19","ex/v0.24.1/cat-file.html#git_object_type2string-20","ex/v0.24.1/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.1/general.html#git_object_type2string-33"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.1/general.html#git_odb_read-34"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":128,"lineto":128,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":148,"lineto":148,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":171,"lineto":172,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if objects can be found in the object database from a short OID.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_write-35"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":263,"lineto":263,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":285,"lineto":285,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":356,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.1/general.html#git_odb_object_free-36"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_object_data-37"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":429,"lineto":429,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.1/general.html#git_odb_object_size-38"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.1/general.html#git_odb_object_type-39"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":481,"lineto":481,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":491,"lineto":491,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.1/general.html#git_oid_fromstr-40","ex/v0.24.1/general.html#git_oid_fromstr-41","ex/v0.24.1/general.html#git_oid_fromstr-42","ex/v0.24.1/general.html#git_oid_fromstr-43","ex/v0.24.1/general.html#git_oid_fromstr-44","ex/v0.24.1/general.html#git_oid_fromstr-45","ex/v0.24.1/general.html#git_oid_fromstr-46","ex/v0.24.1/general.html#git_oid_fromstr-47"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.1/general.html#git_oid_fmt-48","ex/v0.24.1/general.html#git_oid_fmt-49","ex/v0.24.1/general.html#git_oid_fmt-50","ex/v0.24.1/general.html#git_oid_fmt-51","ex/v0.24.1/general.html#git_oid_fmt-52"],"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_oid_fmt-1","ex/v0.24.1/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.1/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_tostr-18","ex/v0.24.1/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_oid_tostr-26","ex/v0.24.1/cat-file.html#git_oid_tostr-27","ex/v0.24.1/cat-file.html#git_oid_tostr-28","ex/v0.24.1/cat-file.html#git_oid_tostr-29","ex/v0.24.1/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.1/log.html#git_oid_tostr-39","ex/v0.24.1/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_oid_tostr-12","ex/v0.24.1/rev-parse.html#git_oid_tostr-13","ex/v0.24.1/rev-parse.html#git_oid_tostr-14","ex/v0.24.1/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_cpy-20","ex/v0.24.1/blame.html#git_oid_cpy-21","ex/v0.24.1/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.1/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or -1 if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.1/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_lookup-53"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_target-54"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_symbolic_target-55"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_type-56"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.1/general.html#git_reference_list-57"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.1/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":676,"lineto":680,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.1/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.1/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":222,"lineto":222,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":231,"lineto":231,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_free-6","ex/v0.24.1/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.1/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.1/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":471,"lineto":473,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":569,"lineto":571,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":613,"lineto":615,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":633,"lineto":633,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":647,"lineto":647,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":663,"lineto":668,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":684,"lineto":688,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":697,"lineto":697,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":709,"lineto":711,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":716,"lineto":716,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.1/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":724,"lineto":724,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":736,"lineto":736,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":743,"lineto":743,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":765,"lineto":769,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":777,"lineto":777,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":789,"lineto":789,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.1/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":807,"lineto":807,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.1/general.html#git_repository_open-58"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.1/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.1/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.1/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.1/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.1/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.1/log.html#git_repository_open_ext-44","ex/v0.24.1/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.1/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.1/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.1/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.1/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.1/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.1/general.html#git_repository_free-59"],"init.c":["ex/v0.24.1/init.html#git_repository_free-6"],"log.c":["ex/v0.24.1/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.1/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.1/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.1/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.1/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.1/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_path-9"],"status.c":["ex/v0.24.1/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.1/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.1/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.1/general.html#git_repository_odb-60"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.1/general.html#git_repository_index-61"],"init.c":["ex/v0.24.1/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":696,"lineto":696,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":710,"lineto":710,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":718,"lineto":718,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":727,"lineto":727,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":739,"lineto":739,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":752,"lineto":752,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.1/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.1/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.1/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.1/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.1/tag.html#git_revparse_single-13","ex/v0.24.1/tag.html#git_revparse_single-14","ex/v0.24.1/tag.html#git_revparse_single-15","ex/v0.24.1/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.1/blame.html#git_revparse-27"],"log.c":["ex/v0.24.1/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.1/rev-parse.html#git_revparse-18","ex/v0.24.1/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_new-62"],"log.c":["ex/v0.24.1/log.html#git_revwalk_new-49","ex/v0.24.1/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_push-63"],"log.c":["ex/v0.24.1/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.1/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.1/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_next-64"],"log.c":["ex/v0.24.1/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_sorting-65"],"log.c":["ex/v0.24.1/log.html#git_revwalk_sorting-55","ex/v0.24.1/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.1/general.html#git_revwalk_free-66"],"log.c":["ex/v0.24.1/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.1/general.html#git_signature_new-67","ex/v0.24.1/general.html#git_signature_new-68"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.1/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.1/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.1/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.1/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_new-12","ex/v0.24.1/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_entrycount-14","ex/v0.24.1/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_byindex-16","ex/v0.24.1/status.html#git_status_byindex-17","ex/v0.24.1/status.html#git_status_byindex-18","ex/v0.24.1/status.html#git_status_byindex-19","ex/v0.24.1/status.html#git_status_byindex-20","ex/v0.24.1/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.1/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.1/general.html#git_strarray_free-69"],"remote.c":["ex/v0.24.1/remote.html#git_strarray_free-16","ex/v0.24.1/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.1/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":173,"lineto":174,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":192,"lineto":192,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":221,"lineto":224,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":231,"lineto":231,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":251,"lineto":254,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":281,"lineto":286,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":310,"lineto":312,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":325,"lineto":325,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":344,"lineto":344,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":362,"lineto":362,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":383,"lineto":383,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":397,"lineto":397,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":426,"lineto":426,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":451,"lineto":452,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":464,"lineto":467,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":479,"lineto":480,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":492,"lineto":495,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":508,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":521,"lineto":524,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":539,"lineto":539,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":554,"lineto":557,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":567,"lineto":567,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":581,"lineto":583,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":595,"lineto":595,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":611,"lineto":615,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.1/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":631,"lineto":633,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":104,"lineto":106,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":53,"lineto":53,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":117,"lineto":119,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":131,"lineto":131,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":175,"lineto":176,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":189,"lineto":192,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":202,"lineto":205,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":215,"lineto":218,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":229,"lineto":229,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":350,"lineto":353,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":374,"lineto":377,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.1/general.html#git_tag_lookup-70"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.1/general.html#git_tag_target-71"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.1/general.html#git_tag_target_type-72"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.1/general.html#git_tag_name-73"],"tag.c":["ex/v0.24.1/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tag_message-39","ex/v0.24.1/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.1/general.html#git_tag_message-74"],"tag.c":["ex/v0.24.1/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.1/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_lookup-75","ex/v0.24.1/general.html#git_tree_lookup-76"],"init.c":["ex/v0.24.1/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.1/diff.html#git_tree_free-17","ex/v0.24.1/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.1/init.html#git_tree_free-15"],"log.c":["ex/v0.24.1/log.html#git_tree_free-58","ex/v0.24.1/log.html#git_tree_free-59","ex/v0.24.1/log.html#git_tree_free-60","ex/v0.24.1/log.html#git_tree_free-61","ex/v0.24.1/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.1/general.html#git_tree_entrycount-77"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_entry_byname-78"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.1/general.html#git_tree_entry_byindex-79"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.1/general.html#git_tree_entry_name-80","ex/v0.24.1/general.html#git_tree_entry_name-81"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.1/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.1/general.html#git_tree_entry_to_object-82"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":347,"lineto":351,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":363,"lineto":367,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":446,"lineto":449,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":493,"lineto":496,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":513,"lineto":516,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":566,"lineto":570,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":366,"lineto":366,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":484,"lineto":487,"block":"git_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":469,"lineto":481,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":457,"lineto":466,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":325,"lineto":332,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":281,"lineto":287,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":681,"lineto":707,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":575,"lineto":644,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1260,"lineto":1267,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1272,"lineto":1294,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1023,"lineto":1029,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":501,"lineto":508,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":" Starting line number in old_file "},{"type":"int","name":"old_lines","comments":" Number of lines in old_file "},{"type":"int","name":"new_start","comments":" Starting line number in new_file "},{"type":"int","name":"new_lines","comments":" Number of lines in new_file "},{"type":"size_t","name":"header_len","comments":" Number of bytes in header text "},{"type":"char [128]","name":"header","comments":" Header text, NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":548,"lineto":556,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":527,"lineto":543,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":396,"lineto":416,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":649,"lineto":659,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1174,"lineto":1174,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1179,"lineto":1194,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":70,"lineto":102,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":523,"lineto":555,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS"],"type":"enum","file":"common.h","line":144,"lineto":161,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":302,"lineto":331,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":281,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":336,"lineto":354,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":577,"lineto":599,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":495,"lineto":513,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":374,"lineto":458,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":687,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":324,"lineto":337,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":157,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.1/add.html"],["blame.c","ex/v0.24.1/blame.html"],["cat-file.c","ex/v0.24.1/cat-file.html"],["common.c","ex/v0.24.1/common.html"],["describe.c","ex/v0.24.1/describe.html"],["diff.c","ex/v0.24.1/diff.html"],["for-each-ref.c","ex/v0.24.1/for-each-ref.html"],["general.c","ex/v0.24.1/general.html"],["init.c","ex/v0.24.1/init.html"],["log.c","ex/v0.24.1/log.html"],["network/clone.c","ex/v0.24.1/network/clone.html"],["network/common.c","ex/v0.24.1/network/common.html"],["network/fetch.c","ex/v0.24.1/network/fetch.html"],["network/git2.c","ex/v0.24.1/network/git2.html"],["network/index-pack.c","ex/v0.24.1/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.1/network/ls-remote.html"],["remote.c","ex/v0.24.1/remote.html"],["rev-list.c","ex/v0.24.1/rev-list.html"],["rev-parse.c","ex/v0.24.1/rev-parse.html"],["showindex.c","ex/v0.24.1/showindex.html"],["status.c","ex/v0.24.1/status.html"],["tag.c","ex/v0.24.1/tag.html"]]}
\ No newline at end of file
diff --git a/v0.24.3.json b/v0.24.3.json
new file mode 100644
index 0000000..bf7f26d
--- /dev/null
+++ b/v0.24.3.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_create_frombuffer","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend"],"meta":{},"lines":395},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":282},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1346},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":144},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":780},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":569},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":491},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":807},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":752},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":633},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":106},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":53},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":377},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.3/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.3/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.3/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.3/general.html#git_blob_rawsize-3","ex/v0.24.3/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return 0.    This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":203,"lineto":204,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.3/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.3/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.3/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.3/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_lookup-5","ex/v0.24.3/general.html#git_commit_lookup-6","ex/v0.24.3/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.3/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_free-8","ex/v0.24.3/general.html#git_commit_free-9","ex/v0.24.3/general.html#git_commit_free-10","ex/v0.24.3/general.html#git_commit_free-11"],"log.c":["ex/v0.24.3/log.html#git_commit_free-2","ex/v0.24.3/log.html#git_commit_free-3","ex/v0.24.3/log.html#git_commit_free-4","ex/v0.24.3/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_id-12"],"log.c":["ex/v0.24.3/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.3/log.html#git_commit_owner-7","ex/v0.24.3/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_message-3","ex/v0.24.3/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.3/general.html#git_commit_message-13","ex/v0.24.3/general.html#git_commit_message-14","ex/v0.24.3/general.html#git_commit_message-15"],"log.c":["ex/v0.24.3/log.html#git_commit_message-9","ex/v0.24.3/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.3/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_time-16","ex/v0.24.3/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.3/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.3/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.3/general.html#git_commit_author-19","ex/v0.24.3/general.html#git_commit_author-20"],"log.c":["ex/v0.24.3/log.html#git_commit_author-12","ex/v0.24.3/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.3/log.html#git_commit_tree-14","ex/v0.24.3/log.html#git_commit_tree-15","ex/v0.24.3/log.html#git_commit_tree-16","ex/v0.24.3/log.html#git_commit_tree-17","ex/v0.24.3/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.3/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.3/log.html#git_commit_parentcount-19","ex/v0.24.3/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.3/log.html#git_commit_parent-21","ex/v0.24.3/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.3/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.3/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.3/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":282,"lineto":282,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to disabled.  * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.3/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.3/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.3/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.3/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.3/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.3/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":435,"lineto":437,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":720,"lineto":722,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":736,"lineto":736,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.3/log.html#git_diff_free-24","ex/v0.24.3/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":754,"lineto":759,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.3/log.html#git_diff_tree_to_tree-26","ex/v0.24.3/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":780,"lineto":785,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":807,"lineto":811,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":836,"lineto":840,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":855,"lineto":859,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":873,"lineto":878,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":893,"lineto":895,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.3/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":942,"lineto":943,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":962,"lineto":963,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":971,"lineto":971,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":999,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1018,"lineto":1018,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1043,"lineto":1047,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.3/log.html#git_diff_print-29"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1084,"lineto":1094,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1121,"lineto":1132,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1155,"lineto":1167,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1203,"lineto":1205,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1213,"lineto":1214,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1222,"lineto":1223,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1231,"lineto":1232,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1243,"lineto":1247,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1255,"lineto":1255,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.3/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1307,"lineto":1310,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1326,"lineto":1333,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1344,"lineto":1346,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":110,"lineto":110,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.3/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.3/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.3/network/git2.html#giterr_last-1","ex/v0.24.3/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":133,"lineto":133,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":144,"lineto":144,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.3/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.3/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.3/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.3/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.3/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.3/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.3/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.3/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.3/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.3/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.3/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.3/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.3/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.3/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.3/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.3/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.3/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.3/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.3/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.3/general.html#git_index_free-29"],"init.c":["ex/v0.24.3/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":271,"lineto":271,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":280,"lineto":280,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":288,"lineto":288,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":300,"lineto":300,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":311,"lineto":311,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":332,"lineto":332,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.3/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":349,"lineto":349,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":368,"lineto":368,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.3/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":379,"lineto":379,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":392,"lineto":393,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.3/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":407,"lineto":408,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":418,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":428,"lineto":429,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":445,"lineto":445,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":457,"lineto":457,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":466,"lineto":466,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":497,"lineto":497,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":526,"lineto":529,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":545,"lineto":545,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":592,"lineto":597,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":614,"lineto":618,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":643,"lineto":647,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":658,"lineto":658,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":669,"lineto":669,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":694,"lineto":698,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":714,"lineto":719,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":728,"lineto":728,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":736,"lineto":736,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":743,"lineto":743,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":754,"lineto":756,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":768,"lineto":772,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":779,"lineto":780,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":295,"lineto":297,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":366,"lineto":371,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":382,"lineto":386,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.3/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":397,"lineto":401,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":412,"lineto":416,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":427,"lineto":431,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":442,"lineto":446,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":464,"lineto":469,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":485,"lineto":491,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":498,"lineto":498,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":516,"lineto":522,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":539,"lineto":544,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":564,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.3/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.3/blame.html#git_object_id-10","ex/v0.24.3/blame.html#git_object_id-11","ex/v0.24.3/blame.html#git_object_id-12","ex/v0.24.3/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_object_id-12","ex/v0.24.3/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.3/log.html#git_object_id-34","ex/v0.24.3/log.html#git_object_id-35","ex/v0.24.3/log.html#git_object_id-36","ex/v0.24.3/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_object_id-4","ex/v0.24.3/rev-parse.html#git_object_id-5","ex/v0.24.3/rev-parse.html#git_object_id-6","ex/v0.24.3/rev-parse.html#git_object_id-7","ex/v0.24.3/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.3/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_object_type-14","ex/v0.24.3/cat-file.html#git_object_type-15","ex/v0.24.3/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.3/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.3/blame.html#git_object_free-14","ex/v0.24.3/blame.html#git_object_free-15","ex/v0.24.3/blame.html#git_object_free-16","ex/v0.24.3/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.3/general.html#git_object_free-32"],"log.c":["ex/v0.24.3/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_object_free-9","ex/v0.24.3/rev-parse.html#git_object_free-10","ex/v0.24.3/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.3/tag.html#git_object_free-7","ex/v0.24.3/tag.html#git_object_free-8","ex/v0.24.3/tag.html#git_object_free-9","ex/v0.24.3/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_object_type2string-18","ex/v0.24.3/cat-file.html#git_object_type2string-19","ex/v0.24.3/cat-file.html#git_object_type2string-20","ex/v0.24.3/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.3/general.html#git_object_type2string-33"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.3/general.html#git_odb_read-34"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":128,"lineto":128,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":148,"lineto":148,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":171,"lineto":172,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if objects can be found in the object database from a short OID.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.3/general.html#git_odb_write-35"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":263,"lineto":263,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":285,"lineto":285,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":356,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.3/general.html#git_odb_object_free-36"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.3/general.html#git_odb_object_data-37"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":429,"lineto":429,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.3/general.html#git_odb_object_size-38"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.3/general.html#git_odb_object_type-39"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":481,"lineto":481,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":491,"lineto":491,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.3/general.html#git_oid_fromstr-40","ex/v0.24.3/general.html#git_oid_fromstr-41","ex/v0.24.3/general.html#git_oid_fromstr-42","ex/v0.24.3/general.html#git_oid_fromstr-43","ex/v0.24.3/general.html#git_oid_fromstr-44","ex/v0.24.3/general.html#git_oid_fromstr-45","ex/v0.24.3/general.html#git_oid_fromstr-46","ex/v0.24.3/general.html#git_oid_fromstr-47"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.3/general.html#git_oid_fmt-48","ex/v0.24.3/general.html#git_oid_fmt-49","ex/v0.24.3/general.html#git_oid_fmt-50","ex/v0.24.3/general.html#git_oid_fmt-51","ex/v0.24.3/general.html#git_oid_fmt-52"],"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_oid_fmt-1","ex/v0.24.3/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.3/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.3/blame.html#git_oid_tostr-18","ex/v0.24.3/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_oid_tostr-26","ex/v0.24.3/cat-file.html#git_oid_tostr-27","ex/v0.24.3/cat-file.html#git_oid_tostr-28","ex/v0.24.3/cat-file.html#git_oid_tostr-29","ex/v0.24.3/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.3/log.html#git_oid_tostr-39","ex/v0.24.3/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_oid_tostr-12","ex/v0.24.3/rev-parse.html#git_oid_tostr-13","ex/v0.24.3/rev-parse.html#git_oid_tostr-14","ex/v0.24.3/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.3/blame.html#git_oid_cpy-20","ex/v0.24.3/blame.html#git_oid_cpy-21","ex/v0.24.3/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.3/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or -1 if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.3/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.3/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.3/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.3/general.html#git_reference_lookup-53"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.3/general.html#git_reference_target-54"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.3/general.html#git_reference_symbolic_target-55"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.3/general.html#git_reference_type-56"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.3/general.html#git_reference_list-57"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.3/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":676,"lineto":680,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.3/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.3/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":222,"lineto":222,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":231,"lineto":231,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_remote_free-6","ex/v0.24.3/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.3/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.3/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":471,"lineto":473,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":569,"lineto":571,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":613,"lineto":615,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":633,"lineto":633,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":647,"lineto":647,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":663,"lineto":668,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":684,"lineto":688,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":697,"lineto":697,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":709,"lineto":711,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":716,"lineto":716,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.3/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":724,"lineto":724,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":736,"lineto":736,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":743,"lineto":743,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":765,"lineto":769,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":777,"lineto":777,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":789,"lineto":789,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.3/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":807,"lineto":807,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.3/general.html#git_repository_open-58"],"network/git2.c":["ex/v0.24.3/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.3/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.3/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.3/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.3/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.3/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.3/log.html#git_repository_open_ext-44","ex/v0.24.3/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.3/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.3/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.3/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.3/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.3/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.3/general.html#git_repository_free-59"],"init.c":["ex/v0.24.3/init.html#git_repository_free-6"],"log.c":["ex/v0.24.3/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.3/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.3/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.3/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.3/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.3/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.3/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.3/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.3/init.html#git_repository_path-9"],"status.c":["ex/v0.24.3/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.3/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.3/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.3/general.html#git_repository_odb-60"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.3/general.html#git_repository_index-61"],"init.c":["ex/v0.24.3/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":696,"lineto":696,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":710,"lineto":710,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":718,"lineto":718,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":727,"lineto":727,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":739,"lineto":739,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":752,"lineto":752,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.3/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.3/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.3/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.3/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.3/tag.html#git_revparse_single-13","ex/v0.24.3/tag.html#git_revparse_single-14","ex/v0.24.3/tag.html#git_revparse_single-15","ex/v0.24.3/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.3/blame.html#git_revparse-27"],"log.c":["ex/v0.24.3/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.3/rev-parse.html#git_revparse-18","ex/v0.24.3/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.3/general.html#git_revwalk_new-62"],"log.c":["ex/v0.24.3/log.html#git_revwalk_new-49","ex/v0.24.3/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.3/general.html#git_revwalk_push-63"],"log.c":["ex/v0.24.3/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.3/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.3/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.3/general.html#git_revwalk_next-64"],"log.c":["ex/v0.24.3/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.3/general.html#git_revwalk_sorting-65"],"log.c":["ex/v0.24.3/log.html#git_revwalk_sorting-55","ex/v0.24.3/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.3/general.html#git_revwalk_free-66"],"log.c":["ex/v0.24.3/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.3/general.html#git_signature_new-67","ex/v0.24.3/general.html#git_signature_new-68"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.3/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.3/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.3/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.3/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_list_new-12","ex/v0.24.3/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_list_entrycount-14","ex/v0.24.3/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_byindex-16","ex/v0.24.3/status.html#git_status_byindex-17","ex/v0.24.3/status.html#git_status_byindex-18","ex/v0.24.3/status.html#git_status_byindex-19","ex/v0.24.3/status.html#git_status_byindex-20","ex/v0.24.3/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.3/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.3/general.html#git_strarray_free-69"],"remote.c":["ex/v0.24.3/remote.html#git_strarray_free-16","ex/v0.24.3/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.3/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":173,"lineto":174,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":192,"lineto":192,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":221,"lineto":224,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":231,"lineto":231,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":251,"lineto":254,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.3/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":281,"lineto":286,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":310,"lineto":312,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":325,"lineto":325,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.3/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":344,"lineto":344,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.3/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":362,"lineto":362,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":383,"lineto":383,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":397,"lineto":397,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":426,"lineto":426,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":451,"lineto":452,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":464,"lineto":467,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":479,"lineto":480,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":492,"lineto":495,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":508,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":521,"lineto":524,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":539,"lineto":539,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":554,"lineto":557,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":567,"lineto":567,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":581,"lineto":583,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":595,"lineto":595,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":611,"lineto":615,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.3/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":631,"lineto":633,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":104,"lineto":106,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":53,"lineto":53,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":117,"lineto":119,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":131,"lineto":131,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":175,"lineto":176,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":189,"lineto":192,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":202,"lineto":205,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":215,"lineto":218,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":229,"lineto":229,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":350,"lineto":353,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":374,"lineto":377,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.3/general.html#git_tag_lookup-70"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.3/general.html#git_tag_target-71"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.3/general.html#git_tag_target_type-72"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.3/general.html#git_tag_name-73"],"tag.c":["ex/v0.24.3/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tag_message-39","ex/v0.24.3/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.3/general.html#git_tag_message-74"],"tag.c":["ex/v0.24.3/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.3/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.3/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.3/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.3/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.3/general.html#git_tree_lookup-75","ex/v0.24.3/general.html#git_tree_lookup-76"],"init.c":["ex/v0.24.3/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.3/diff.html#git_tree_free-17","ex/v0.24.3/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.3/init.html#git_tree_free-15"],"log.c":["ex/v0.24.3/log.html#git_tree_free-58","ex/v0.24.3/log.html#git_tree_free-59","ex/v0.24.3/log.html#git_tree_free-60","ex/v0.24.3/log.html#git_tree_free-61","ex/v0.24.3/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.3/general.html#git_tree_entrycount-77"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.3/general.html#git_tree_entry_byname-78"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.3/general.html#git_tree_entry_byindex-79"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.3/general.html#git_tree_entry_name-80","ex/v0.24.3/general.html#git_tree_entry_name-81"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.3/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.3/general.html#git_tree_entry_to_object-82"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":347,"lineto":351,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":363,"lineto":367,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":446,"lineto":449,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":493,"lineto":496,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":513,"lineto":516,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":566,"lineto":570,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":366,"lineto":366,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":484,"lineto":487,"block":"git_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":469,"lineto":481,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":457,"lineto":466,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":325,"lineto":332,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":281,"lineto":287,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":681,"lineto":707,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":575,"lineto":644,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1260,"lineto":1267,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1272,"lineto":1294,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1023,"lineto":1029,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":501,"lineto":508,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":" Starting line number in old_file "},{"type":"int","name":"old_lines","comments":" Number of lines in old_file "},{"type":"int","name":"new_start","comments":" Starting line number in new_file "},{"type":"int","name":"new_lines","comments":" Number of lines in new_file "},{"type":"size_t","name":"header_len","comments":" Number of bytes in header text "},{"type":"char [128]","name":"header","comments":" Header text, NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":548,"lineto":556,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":527,"lineto":543,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":396,"lineto":416,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":649,"lineto":659,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1174,"lineto":1174,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1179,"lineto":1194,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":70,"lineto":102,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":523,"lineto":555,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS"],"type":"enum","file":"common.h","line":144,"lineto":161,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":302,"lineto":331,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":281,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":336,"lineto":354,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":577,"lineto":599,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":495,"lineto":513,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":374,"lineto":458,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":687,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":324,"lineto":337,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":157,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.3/add.html"],["blame.c","ex/v0.24.3/blame.html"],["cat-file.c","ex/v0.24.3/cat-file.html"],["common.c","ex/v0.24.3/common.html"],["describe.c","ex/v0.24.3/describe.html"],["diff.c","ex/v0.24.3/diff.html"],["for-each-ref.c","ex/v0.24.3/for-each-ref.html"],["general.c","ex/v0.24.3/general.html"],["init.c","ex/v0.24.3/init.html"],["log.c","ex/v0.24.3/log.html"],["network/clone.c","ex/v0.24.3/network/clone.html"],["network/common.c","ex/v0.24.3/network/common.html"],["network/fetch.c","ex/v0.24.3/network/fetch.html"],["network/git2.c","ex/v0.24.3/network/git2.html"],["network/index-pack.c","ex/v0.24.3/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.3/network/ls-remote.html"],["remote.c","ex/v0.24.3/remote.html"],["rev-list.c","ex/v0.24.3/rev-list.html"],["rev-parse.c","ex/v0.24.3/rev-parse.html"],["showindex.c","ex/v0.24.3/showindex.html"],["status.c","ex/v0.24.3/status.html"],["tag.c","ex/v0.24.3/tag.html"]]}
\ No newline at end of file
diff --git a/v0.24.4.json b/v0.24.4.json
new file mode 100644
index 0000000..a4de72c
--- /dev/null
+++ b/v0.24.4.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_frombuffer","git_blob_is_binary","git_blob_dup"],"meta":{},"lines":228},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend","git_commit_create_buffer","git_commit_create_with_signature","git_commit_dup"],"meta":{},"lines":471},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":284},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_to_buf","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_from_buffer","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1401},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":145},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_version","git_index_set_version","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":805},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":578},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":537},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"proxy.h","functions":["git_proxy_init_options"],"meta":{},"lines":88},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_dup","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":741},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":820},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":771},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":291},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_from_buffer","git_signature_dup","git_signature_free"],"meta":{},"lines":99},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":641},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/merge.h","functions":["git_merge_driver_init_fn","git_merge_driver_shutdown_fn","git_merge_driver_apply_fn"],"meta":{},"lines":135},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":117},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":54},{"file":"sys/time.h","functions":["git_time_monotonic"],"meta":{},"lines":27},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":379},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel","git_tag_dup"],"meta":{},"lines":357},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk","git_tree_dup","git_tree_create_updated"],"meta":{},"lines":465},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.4/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.4/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.4/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.4/general.html#git_blob_rawsize-3","ex/v0.24.4/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromstream":{"type":"function","file":"blob.h","line":178,"lineto":181,"args":[{"name":"out","type":"git_writestream **","comment":"the stream into which to write"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."}],"argline":"git_writestream **out, git_repository *repo, const char *hintpath","sig":"git_writestream **::git_repository *::const char *","return":{"type":"int","comment":" 0 or error code"},"description":"<p>Create a stream to write a new blob into the object db</p>\n","comments":"<p>This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use <code>git_blob_create_frombuffer()</code>. If you do not, but know the size of the contents (and don&#39;t want/need to perform filtering), use <code>git_odb_open_wstream()</code>.</p>\n\n<p>Don&#39;t close this stream yourself but pass it to <code>git_blob_create_fromstream_commit()</code> to commit the write to the object db and get the object id.</p>\n\n<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n","group":"blob"},"git_blob_create_fromstream_commit":{"type":"function","file":"blob.h","line":192,"lineto":194,"args":[{"name":"out","type":"git_oid *","comment":"the id of the new blob"},{"name":"stream","type":"git_writestream *","comment":"the stream to close"}],"argline":"git_oid *out, git_writestream *stream","sig":"git_oid *::git_writestream *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Close the stream and write the blob to the object db</p>\n","comments":"<p>The stream will be closed and freed.</p>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":205,"lineto":206,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_blob_dup":{"type":"function","file":"blob.h","line":228,"lineto":228,"args":[{"name":"out","type":"git_blob **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_blob *","comment":"Original object to copy"}],"argline":"git_blob **out, git_blob *source","sig":"git_blob **::git_blob *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a blob. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.4/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.4/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.4/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.4/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_lookup-5","ex/v0.24.4/general.html#git_commit_lookup-6","ex/v0.24.4/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.4/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_free-8","ex/v0.24.4/general.html#git_commit_free-9","ex/v0.24.4/general.html#git_commit_free-10","ex/v0.24.4/general.html#git_commit_free-11"],"log.c":["ex/v0.24.4/log.html#git_commit_free-2","ex/v0.24.4/log.html#git_commit_free-3","ex/v0.24.4/log.html#git_commit_free-4","ex/v0.24.4/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_id-12"],"log.c":["ex/v0.24.4/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.4/log.html#git_commit_owner-7","ex/v0.24.4/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_message-3","ex/v0.24.4/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.4/general.html#git_commit_message-13","ex/v0.24.4/general.html#git_commit_message-14","ex/v0.24.4/general.html#git_commit_message-15"],"log.c":["ex/v0.24.4/log.html#git_commit_message-9","ex/v0.24.4/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.4/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_time-16","ex/v0.24.4/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.4/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.4/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.4/general.html#git_commit_author-19","ex/v0.24.4/general.html#git_commit_author-20"],"log.c":["ex/v0.24.4/log.html#git_commit_author-12","ex/v0.24.4/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.4/log.html#git_commit_tree-14","ex/v0.24.4/log.html#git_commit_tree-15","ex/v0.24.4/log.html#git_commit_tree-16","ex/v0.24.4/log.html#git_commit_tree-17","ex/v0.24.4/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.4/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.4/log.html#git_commit_parentcount-19","ex/v0.24.4/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.4/log.html#git_commit_parent-21","ex/v0.24.4/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.4/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.4/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.4/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_commit_create_buffer":{"type":"function","file":"commit.h","line":432,"lineto":441,"args":[{"name":"out","type":"git_buf *","comment":"the buffer into which to write the commit object content"},{"name":"repo","type":"git_repository *","comment":"Repository where the referenced tree and parents live"},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_buf *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_buf *::git_repository *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit and write it into a buffer</p>\n","comments":"<p>Create a commit as with <code>git_commit_create()</code> but instead of writing it to the objectdb, write the contents of the object into a buffer.</p>\n","group":"commit"},"git_commit_create_with_signature":{"type":"function","file":"commit.h","line":457,"lineto":462,"args":[{"name":"out","type":"git_oid *","comment":"the resulting commit id"},{"name":"repo","type":"git_repository *","comment":null},{"name":"commit_content","type":"const char *","comment":"the content of the unsigned commit object"},{"name":"signature","type":"const char *","comment":"the signature to add to the commit"},{"name":"signature_field","type":"const char *","comment":"which header field should contain this\n signature. Leave `NULL` for the default of \"gpgsig\""}],"argline":"git_oid *out, git_repository *repo, const char *commit_content, const char *signature, const char *signature_field","sig":"git_oid *::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit object from the given buffer and signature</p>\n","comments":"<p>Given the unsigned commit object&#39;s contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.</p>\n","group":"commit"},"git_commit_dup":{"type":"function","file":"commit.h","line":471,"lineto":471,"args":[{"name":"out","type":"git_commit **","comment":"Pointer to store the copy of the commit"},{"name":"source","type":"git_commit *","comment":"Original commit to copy"}],"argline":"git_commit **out, git_commit *source","sig":"git_commit **::git_commit *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a commit. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":284,"lineto":284,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to enabled.\n\n* opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.4/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.4/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.4/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.4/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.4/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.4/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":441,"lineto":443,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":736,"lineto":738,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":752,"lineto":752,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.4/log.html#git_diff_free-24","ex/v0.24.4/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":770,"lineto":775,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.4/log.html#git_diff_tree_to_tree-26","ex/v0.24.4/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":796,"lineto":801,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":823,"lineto":827,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":852,"lineto":856,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":871,"lineto":875,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":889,"lineto":894,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":925,"lineto":927,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":945,"lineto":945,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.4/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":958,"lineto":959,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":978,"lineto":979,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":987,"lineto":987,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":1015,"lineto":1021,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1034,"lineto":1034,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1059,"lineto":1063,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.4/log.html#git_diff_print-29"]}},"git_diff_to_buf":{"type":"function","file":"diff.h","line":1075,"lineto":1078,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf that will\n            contain the diff text"},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."}],"argline":"git_buf *out, git_diff *diff, git_diff_format_t format","sig":"git_buf *::git_diff *::git_diff_format_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Produce the complete formatted text output from a diff into a\n buffer.</p>\n","comments":"","group":"diff"},"git_diff_blobs":{"type":"function","file":"diff.h","line":1115,"lineto":1125,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1152,"lineto":1163,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1186,"lineto":1198,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_from_buffer":{"type":"function","file":"diff.h","line":1219,"lineto":1222,"args":[{"name":"out","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"content","type":"const char *","comment":"The contents of a patch file"},{"name":"content_len","type":"size_t","comment":"The length of the patch file contents"}],"argline":"git_diff **out, const char *content, size_t content_len","sig":"git_diff **::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the contents of a git patch file into a <code>git_diff</code> object.</p>\n","comments":"<p>The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences.  For example, a patch file likely contains abbreviated object IDs, so the object IDs in a <code>git_diff_delta</code> produced by this function will also be abbreviated.</p>\n\n<p>This function will only read patch files created by a git implementation, it will not read unified diffs produced by the <code>diff</code> program, nor any other types of patch files.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1258,"lineto":1260,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1268,"lineto":1269,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1277,"lineto":1278,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1286,"lineto":1287,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1298,"lineto":1302,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1310,"lineto":1310,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.4/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1362,"lineto":1365,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1381,"lineto":1388,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1399,"lineto":1401,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":111,"lineto":111,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.4/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.4/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.4/network/git2.html#giterr_last-1","ex/v0.24.4/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":116,"lineto":116,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":134,"lineto":134,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":145,"lineto":145,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.4/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.4/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.4/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.4/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.4/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.4/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.4/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.4/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.4/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.4/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.4/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.4/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.4/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.4/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.4/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.4/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.4/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.4/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.4/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.4/general.html#git_index_free-29"],"init.c":["ex/v0.24.4/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_version":{"type":"function","file":"index.h","line":264,"lineto":264,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"unsigned int","comment":" the index version"},"description":"<p>Get index on-disk version.</p>\n","comments":"<p>Valid return values are 2, 3, or 4.  If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.</p>\n","group":"index"},"git_index_set_version":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"version","type":"unsigned int","comment":"The new version number"}],"argline":"git_index *index, unsigned int version","sig":"git_index *::unsigned int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index on-disk version.</p>\n","comments":"<p>Valid values are 2, 3, or 4.  If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":296,"lineto":296,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":305,"lineto":305,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":313,"lineto":313,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":325,"lineto":325,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":336,"lineto":336,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.4/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":374,"lineto":374,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":393,"lineto":393,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.4/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":417,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.4/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":432,"lineto":433,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":453,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":482,"lineto":482,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":491,"lineto":491,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":522,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":551,"lineto":554,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":570,"lineto":570,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":617,"lineto":622,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":639,"lineto":643,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":668,"lineto":672,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":683,"lineto":683,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":694,"lineto":694,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":719,"lineto":723,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":739,"lineto":744,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":753,"lineto":753,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":761,"lineto":761,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":768,"lineto":768,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":779,"lineto":781,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":793,"lineto":797,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":804,"lineto":805,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":304,"lineto":306,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":375,"lineto":380,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":391,"lineto":395,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.4/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":406,"lineto":410,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":421,"lineto":425,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":436,"lineto":440,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":451,"lineto":455,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":473,"lineto":478,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":494,"lineto":500,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":507,"lineto":507,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":525,"lineto":531,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":548,"lineto":553,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":573,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.4/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.4/blame.html#git_object_id-10","ex/v0.24.4/blame.html#git_object_id-11","ex/v0.24.4/blame.html#git_object_id-12","ex/v0.24.4/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_object_id-12","ex/v0.24.4/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.4/log.html#git_object_id-34","ex/v0.24.4/log.html#git_object_id-35","ex/v0.24.4/log.html#git_object_id-36","ex/v0.24.4/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_object_id-4","ex/v0.24.4/rev-parse.html#git_object_id-5","ex/v0.24.4/rev-parse.html#git_object_id-6","ex/v0.24.4/rev-parse.html#git_object_id-7","ex/v0.24.4/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.4/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_object_type-14","ex/v0.24.4/cat-file.html#git_object_type-15","ex/v0.24.4/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.4/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.4/blame.html#git_object_free-14","ex/v0.24.4/blame.html#git_object_free-15","ex/v0.24.4/blame.html#git_object_free-16","ex/v0.24.4/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.4/general.html#git_object_free-32"],"log.c":["ex/v0.24.4/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_object_free-9","ex/v0.24.4/rev-parse.html#git_object_free-10","ex/v0.24.4/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.4/tag.html#git_object_free-7","ex/v0.24.4/tag.html#git_object_free-8","ex/v0.24.4/tag.html#git_object_free-9","ex/v0.24.4/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_object_type2string-18","ex/v0.24.4/cat-file.html#git_object_type2string-19","ex/v0.24.4/cat-file.html#git_object_type2string-20","ex/v0.24.4/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.4/general.html#git_object_type2string-33","ex/v0.24.4/general.html#git_object_type2string-34"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":74,"lineto":74,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":81,"lineto":81,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.4/general.html#git_odb_read-35"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":129,"lineto":129,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":149,"lineto":149,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":160,"lineto":160,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":173,"lineto":174,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if an object can be found in the object database by an\n abbreviated object ID.</p>\n","comments":"","group":"odb"},"git_odb_expand_ids":{"type":"function","file":"odb.h","line":215,"lineto":218,"args":[{"name":"db","type":"git_odb *","comment":"The database to be searched for the given objects."},{"name":"ids","type":"git_odb_expand_id *","comment":"An array of short object IDs to search for"},{"name":"count","type":"size_t","comment":"The length of the `ids` array"}],"argline":"git_odb *db, git_odb_expand_id *ids, size_t count","sig":"git_odb *::git_odb_expand_id *::size_t","return":{"type":"int","comment":" 0 on success or an error code on failure"},"description":"<p>Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.  The given array will be\n updated in place:  for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (<code>GIT_OID_HEXSZ</code>) and type will be written back to\n the array.  For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.</p>\n","comments":"<p>Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)</p>\n","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":238,"lineto":238,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":253,"lineto":253,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":273,"lineto":273,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.4/general.html#git_odb_write-36"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":296,"lineto":296,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":309,"lineto":309,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":324,"lineto":324,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":331,"lineto":331,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":338,"lineto":338,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":364,"lineto":364,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":384,"lineto":388,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":402,"lineto":402,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":417,"lineto":417,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":431,"lineto":431,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":441,"lineto":441,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.4/general.html#git_odb_object_free-37"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":451,"lineto":451,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":464,"lineto":464,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.4/general.html#git_odb_object_data-38"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":475,"lineto":475,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.4/general.html#git_odb_object_size-39"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":483,"lineto":483,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.4/general.html#git_odb_object_type-40"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":498,"lineto":498,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":519,"lineto":519,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":527,"lineto":527,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":537,"lineto":537,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.4/general.html#git_oid_fromstr-41","ex/v0.24.4/general.html#git_oid_fromstr-42","ex/v0.24.4/general.html#git_oid_fromstr-43","ex/v0.24.4/general.html#git_oid_fromstr-44","ex/v0.24.4/general.html#git_oid_fromstr-45","ex/v0.24.4/general.html#git_oid_fromstr-46","ex/v0.24.4/general.html#git_oid_fromstr-47","ex/v0.24.4/general.html#git_oid_fromstr-48"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.4/general.html#git_oid_fmt-49","ex/v0.24.4/general.html#git_oid_fmt-50","ex/v0.24.4/general.html#git_oid_fmt-51","ex/v0.24.4/general.html#git_oid_fmt-52","ex/v0.24.4/general.html#git_oid_fmt-53","ex/v0.24.4/general.html#git_oid_fmt-54"],"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_oid_fmt-1","ex/v0.24.4/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.4/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.4/blame.html#git_oid_tostr-18","ex/v0.24.4/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_oid_tostr-26","ex/v0.24.4/cat-file.html#git_oid_tostr-27","ex/v0.24.4/cat-file.html#git_oid_tostr-28","ex/v0.24.4/cat-file.html#git_oid_tostr-29","ex/v0.24.4/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.4/log.html#git_oid_tostr-39","ex/v0.24.4/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_oid_tostr-12","ex/v0.24.4/rev-parse.html#git_oid_tostr-13","ex/v0.24.4/rev-parse.html#git_oid_tostr-14","ex/v0.24.4/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.4/blame.html#git_oid_cpy-20","ex/v0.24.4/blame.html#git_oid_cpy-21","ex/v0.24.4/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.4/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.4/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.4/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.4/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_proxy_init_options":{"type":"function","file":"proxy.h","line":88,"lineto":88,"args":[{"name":"opts","type":"git_proxy_options *","comment":"the options struct to initialize"},{"name":"version","type":"unsigned int","comment":"the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`"}],"argline":"git_proxy_options *opts, unsigned int version","sig":"git_proxy_options *::unsigned int","return":{"type":"int","comment":null},"description":"<p>Initialize a proxy options structure</p>\n","comments":"","group":"proxy"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.4/general.html#git_reference_lookup-55"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.4/general.html#git_reference_target-56"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.4/general.html#git_reference_symbolic_target-57"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.4/general.html#git_reference_type-58"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.4/general.html#git_reference_list-59"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_dup":{"type":"function","file":"refs.h","line":473,"lineto":473,"args":[{"name":"dest","type":"git_reference **","comment":"pointer where to store the copy"},{"name":"source","type":"git_reference *","comment":"object to copy"}],"argline":"git_reference **dest, git_reference *source","sig":"git_reference **::git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing reference.</p>\n","comments":"<p>Call <code>git_reference_free</code> to free the data.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":480,"lineto":480,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.4/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":500,"lineto":502,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":513,"lineto":516,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":525,"lineto":525,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":538,"lineto":538,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":545,"lineto":545,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":565,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":579,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":591,"lineto":591,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":601,"lineto":601,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":611,"lineto":611,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":621,"lineto":621,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":631,"lineto":631,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":687,"lineto":691,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":708,"lineto":711,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":727,"lineto":727,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":741,"lineto":741,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.4/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":40,"lineto":44,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":57,"lineto":62,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":91,"lineto":91,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.4/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":103,"lineto":103,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":111,"lineto":111,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":119,"lineto":119,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":130,"lineto":130,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":141,"lineto":141,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":154,"lineto":154,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":167,"lineto":167,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":180,"lineto":180,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":191,"lineto":191,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":204,"lineto":204,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":215,"lineto":215,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":223,"lineto":223,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":232,"lineto":232,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":249,"lineto":249,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"proxy_opts","type":"const git_proxy_options *","comment":"proxy settings"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":271,"lineto":271,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":282,"lineto":282,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":292,"lineto":292,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":301,"lineto":301,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":311,"lineto":311,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_remote_free-6","ex/v0.24.4/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.4/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.4/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":322,"lineto":322,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":473,"lineto":475,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":577,"lineto":579,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_fetch_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":626,"lineto":628,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":646,"lineto":646,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":660,"lineto":660,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":676,"lineto":681,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":697,"lineto":701,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":710,"lineto":710,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":722,"lineto":724,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":729,"lineto":729,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.4/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":737,"lineto":737,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":749,"lineto":749,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":756,"lineto":756,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":778,"lineto":782,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":790,"lineto":790,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":802,"lineto":802,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.4/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":820,"lineto":820,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.4/general.html#git_repository_open-60"],"network/git2.c":["ex/v0.24.4/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.4/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.4/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":141,"lineto":145,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository. May be NULL if\n        flags is GIT_REPOSITORY_OPEN_FROM_ENV."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.4/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.4/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.4/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.4/log.html#git_repository_open_ext-44","ex/v0.24.4/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.4/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.4/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":158,"lineto":158,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":171,"lineto":171,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.4/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.4/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.4/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.4/general.html#git_repository_free-61"],"init.c":["ex/v0.24.4/init.html#git_repository_free-6"],"log.c":["ex/v0.24.4/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.4/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.4/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.4/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.4/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":188,"lineto":191,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.4/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":300,"lineto":302,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":317,"lineto":320,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.4/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.4/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":347,"lineto":347,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":359,"lineto":359,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.4/init.html#git_repository_path-9"],"status.c":["ex/v0.24.4/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":393,"lineto":393,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.4/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":412,"lineto":413,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":421,"lineto":421,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.4/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":437,"lineto":437,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":453,"lineto":453,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":469,"lineto":469,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.4/general.html#git_repository_odb-62"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":485,"lineto":485,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":501,"lineto":501,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.4/general.html#git_repository_index-63"],"init.c":["ex/v0.24.4/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":519,"lineto":519,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":526,"lineto":526,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":535,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":554,"lineto":557,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":574,"lineto":577,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":602,"lineto":607,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":627,"lineto":629,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":647,"lineto":649,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":663,"lineto":665,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":684,"lineto":685,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":715,"lineto":715,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":729,"lineto":729,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":746,"lineto":746,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":758,"lineto":758,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":771,"lineto":771,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.4/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.4/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.4/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.4/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.4/tag.html#git_revparse_single-13","ex/v0.24.4/tag.html#git_revparse_single-14","ex/v0.24.4/tag.html#git_revparse_single-15","ex/v0.24.4/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.4/blame.html#git_revparse-27"],"log.c":["ex/v0.24.4/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.4/rev-parse.html#git_revparse-18","ex/v0.24.4/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":73,"lineto":73,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.4/general.html#git_revwalk_new-64"],"log.c":["ex/v0.24.4/log.html#git_revwalk_new-49","ex/v0.24.4/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":88,"lineto":88,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":107,"lineto":107,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.4/general.html#git_revwalk_push-65"],"log.c":["ex/v0.24.4/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":125,"lineto":125,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":133,"lineto":133,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.4/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":148,"lineto":148,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.4/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":167,"lineto":167,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":175,"lineto":175,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":186,"lineto":186,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":197,"lineto":197,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":217,"lineto":217,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.4/general.html#git_revwalk_next-66"],"log.c":["ex/v0.24.4/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":228,"lineto":228,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.4/general.html#git_revwalk_sorting-67"],"log.c":["ex/v0.24.4/log.html#git_revwalk_sorting-55","ex/v0.24.4/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":243,"lineto":243,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":250,"lineto":250,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":258,"lineto":258,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.4/general.html#git_revwalk_free-68"],"log.c":["ex/v0.24.4/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":267,"lineto":267,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":288,"lineto":291,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.4/general.html#git_signature_new-69","ex/v0.24.4/general.html#git_signature_new-70"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.4/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.4/tag.html#git_signature_default-17"]}},"git_signature_from_buffer":{"type":"function","file":"signature.h","line":76,"lineto":76,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"buf","type":"const char *","comment":"signature string"}],"argline":"git_signature **out, const char *buf","sig":"git_signature **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new signature by parsing the given buffer, which is\n expected to be in the format &quot;Real Name \n&lt;email</p>\n\n<blockquote>\n<p>timestamp tzoffset&quot;,\n where <code>timestamp</code> is the number of seconds since the Unix epoch and\n <code>tzoffset</code> is the timezone offset in <code>hhmm</code> format (note the lack\n of a colon separator).</p>\n</blockquote>\n","comments":"","group":"signature"},"git_signature_dup":{"type":"function","file":"signature.h","line":88,"lineto":88,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":99,"lineto":99,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.4/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.4/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_list_new-12","ex/v0.24.4/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_list_entrycount-14","ex/v0.24.4/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_byindex-16","ex/v0.24.4/status.html#git_status_byindex-17","ex/v0.24.4/status.html#git_status_byindex-18","ex/v0.24.4/status.html#git_status_byindex-19","ex/v0.24.4/status.html#git_status_byindex-20","ex/v0.24.4/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.4/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.4/general.html#git_strarray_free-71"],"remote.c":["ex/v0.24.4/remote.html#git_strarray_free-16","ex/v0.24.4/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.4/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":179,"lineto":180,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":200,"lineto":200,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn&#39;t contain\n the target commit (e.g. because fetchRecurseSubmodules isn&#39;t set), then\n the submodule is fetched using the fetch options supplied in options.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":229,"lineto":232,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":239,"lineto":239,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":259,"lineto":262,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.4/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":289,"lineto":294,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":306,"lineto":306,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":318,"lineto":320,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.4/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.4/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":360,"lineto":360,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":378,"lineto":378,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":391,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":421,"lineto":421,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":434,"lineto":434,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":459,"lineto":460,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":472,"lineto":475,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":487,"lineto":488,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":500,"lineto":503,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":516,"lineto":517,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":529,"lineto":532,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":547,"lineto":547,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":562,"lineto":565,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":575,"lineto":575,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":589,"lineto":591,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":603,"lineto":603,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":619,"lineto":623,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.4/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":639,"lineto":641,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":115,"lineto":117,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":54,"lineto":54,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_time_monotonic":{"type":"function","file":"sys/time.h","line":27,"lineto":27,"args":[],"argline":"","sig":"","return":{"type":"double","comment":null},"description":"<p>Return a monotonic time value, useful for measuring running time\n and setting up timeouts.</p>\n","comments":"<p>The returned value is an arbitrary point in time -- it can only be used when comparing it to another <code>git_time_monotonic</code> call.</p>\n\n<p>The time is returned in seconds, with a decimal fraction that differs on accuracy based on the underlying system, but should be least accurate to Nanoseconds.</p>\n\n<p>This function cannot fail.</p>\n","group":"time"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":119,"lineto":121,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":177,"lineto":178,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":191,"lineto":194,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":204,"lineto":207,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":217,"lineto":220,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":231,"lineto":231,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":352,"lineto":355,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":364,"lineto":367,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":376,"lineto":379,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.4/general.html#git_tag_lookup-72"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.4/general.html#git_tag_target-73"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.4/general.html#git_tag_target_type-74"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.4/general.html#git_tag_name-75"],"tag.c":["ex/v0.24.4/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tag_message-39","ex/v0.24.4/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.4/general.html#git_tag_message-76"],"tag.c":["ex/v0.24.4/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.4/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.4/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.4/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.4/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_tag_dup":{"type":"function","file":"tag.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_tag **","comment":"Pointer to store the copy of the tag"},{"name":"source","type":"git_tag *","comment":"Original tag to copy"}],"argline":"git_tag **out, git_tag *source","sig":"git_tag **::git_tag *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tag. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.4/general.html#git_tree_lookup-77","ex/v0.24.4/general.html#git_tree_lookup-78"],"init.c":["ex/v0.24.4/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.4/diff.html#git_tree_free-17","ex/v0.24.4/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.4/init.html#git_tree_free-15"],"log.c":["ex/v0.24.4/log.html#git_tree_free-58","ex/v0.24.4/log.html#git_tree_free-59","ex/v0.24.4/log.html#git_tree_free-60","ex/v0.24.4/log.html#git_tree_free-61","ex/v0.24.4/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.4/general.html#git_tree_entrycount-79"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.4/general.html#git_tree_entry_byname-80"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.4/general.html#git_tree_entry_byindex-81"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.4/general.html#git_tree_entry_name-82","ex/v0.24.4/general.html#git_tree_entry_name-83"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.4/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.4/general.html#git_tree_entry_to_object-84"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"},"git_tree_dup":{"type":"function","file":"tree.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to store the copy of the tree"},{"name":"source","type":"git_tree *","comment":"Original tree to copy"}],"argline":"git_tree **out, git_tree *source","sig":"git_tree **::git_tree *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tree. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tree"},"git_tree_create_updated":{"type":"function","file":"tree.h","line":465,"lineto":465,"args":[{"name":"out","type":"git_oid *","comment":"id of the new tree"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the tree, must be the\n same as for `baseline`"},{"name":"baseline","type":"git_tree *","comment":"the tree to base these changes on"},{"name":"nupdates","type":"size_t","comment":"the number of elements in the update list"},{"name":"updates","type":"const git_tree_update *","comment":"the list of updates to perform"}],"argline":"git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates","sig":"git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *","return":{"type":"int","comment":null},"description":"<p>Create a tree based on another one with the specified modifications</p>\n","comments":"<p>Given the <code>baseline</code> perform the changes described in the list of <code>updates</code> and create a new tree.</p>\n\n<p>This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a <code>git_index</code> and modifying that, but in exchange it is not as flexible.</p>\n\n<p>Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":353,"lineto":357,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":369,"lineto":373,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":452,"lineto":455,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":509,"lineto":512,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":529,"lineto":532,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":582,"lineto":586,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":27,"lineto":27,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"uint32_t","comment":null},{"name":"total","type":"uint32_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, uint32_t current, uint32_t total, void *payload","sig":"int::uint32_t::uint32_t::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":29,"lineto":29,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":335,"lineto":339,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":368,"lineto":368,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":277,"lineto":279,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_merge_driver_init_fn":{"type":"callback","file":"sys/merge.h","line":71,"lineto":71,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.initialize</code>, this is an optional callback invoked before a merge driver is first used.  It will be called once at most per library lifetime.</p>\n\n<p>If non-NULL, the merge driver&#39;s <code>initialize</code> callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the merge driver).</p>\n"},"git_merge_driver_shutdown_fn":{"type":"callback","file":"sys/merge.h","line":83,"lineto":83,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.shutdown</code>, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_merge_driver</code> object itself.</p>\n"},"git_merge_driver_apply_fn":{"type":"callback","file":"sys/merge.h","line":103,"lineto":109,"args":[{"name":"self","type":"int *","comment":null},{"name":"path_out","type":"const char **","comment":null},{"name":"mode_out","type":"int *","comment":null},{"name":"merged_out","type":"int *","comment":null},{"name":"filter_name","type":"const char *","comment":null},{"name":"src","type":"const git_merge_driver_source *","comment":null}],"argline":"int *self, const char **path_out, int *mode_out, int *merged_out, const char *filter_name, const git_merge_driver_source *src","sig":"int *::const char **::int *::int *::const char *::const git_merge_driver_source *","return":{"type":"int","comment":null},"description":"<p>Callback to perform the merge.</p>\n","comments":"<p>Specified as <code>driver.apply</code>, this is the callback that actually does the merge.  If it can successfully perform a merge, it should populate <code>path_out</code> with a pointer to the filename to accept, <code>mode_out</code> with the resultant mode, and <code>merged_out</code> with the buffer of the merged file and then return 0.  If the driver returns <code>GIT_PASSTHROUGH</code>, then the default merge driver should instead be run.  It can also return <code>GIT_EMERGECONFLICT</code> if the driver is not able to produce a merge result, and the file will remain conflicted.  Any other errors will fail and return to the caller.</p>\n\n<p>The <code>filter_name</code> contains the name of the filter that was invoked, as specified by the file&#39;s attributes.</p>\n\n<p>The <code>src</code> contains the data about the file to be merged.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_create_buffer","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_diff_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_dup","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["unsigned int contains_data","git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":492,"lineto":503,"block":"unsigned int contains_data\ngit_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"unsigned int","name":"contains_data","comments":" Whether there is data in this binary structure or not.  If this\n is `1`, then this was produced and included binary content.  If\n this is `0` then this was generated knowing only that a binary\n file changed but without providing the data, probably from a patch\n that said `Binary files a/file.txt and b/file.txt differ`."},{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":477,"lineto":489,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":465,"lineto":474,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":331,"lineto":338,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode","uint16_t id_abbrev"],"type":"struct","value":"git_diff_file","file":"diff.h","line":286,"lineto":293,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>id</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n\n<p>The <code>id_abbrev</code> represents the known length of the <code>id</code> field, when converted to a hex string.  It is generally <code>GIT_OID_HEXSZ</code>, unless this delta was created from reading a patch file, in which case it may be abbreviated to something reasonable, like 7 characters.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""},{"type":"uint16_t","name":"id_abbrev","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":697,"lineto":723,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":591,"lineto":660,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1315,"lineto":1322,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1327,"lineto":1349,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1039,"lineto":1045,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print","git_diff_to_buf"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":517,"lineto":524,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":""},{"type":"int","name":"old_lines","comments":" Starting line number in old_file "},{"type":"int","name":"new_start","comments":" Number of lines in old_file "},{"type":"int","name":"new_lines","comments":" Starting line number in new_file "},{"type":"size_t","name":"header_len","comments":" Number of lines in new_file "},{"type":"char [128]","name":"header","comments":" Number of bytes in header text "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":564,"lineto":572,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":543,"lineto":559,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":402,"lineto":422,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":665,"lineto":675,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1229,"lineto":1229,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1234,"lineto":1249,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM","GITERR_PATCH"],"type":"enum","file":"errors.h","line":70,"lineto":103,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM\nGITERR_PATCH","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30},{"type":"int","name":"GITERR_PATCH","comments":"","value":31}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":525,"lineto":562,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS","GIT_OPT_GET_USER_AGENT"],"type":"enum","file":"common.h","line":144,"lineto":162,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15},{"type":"int","name":"GIT_OPT_GET_USER_AGENT","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":311,"lineto":340,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_driver",{"decl":["unsigned int version","git_merge_driver_init_fn initialize","git_merge_driver_shutdown_fn shutdown","git_merge_driver_apply_fn apply"],"type":"struct","value":"git_merge_driver","file":"sys/merge.h","line":118,"lineto":135,"block":"unsigned int version\ngit_merge_driver_init_fn initialize\ngit_merge_driver_shutdown_fn shutdown\ngit_merge_driver_apply_fn apply","tdef":null,"description":" Merge driver structure used to register custom merge drivers.","comments":"<p>To associate extra data with a driver, allocate extra data and put the <code>git_merge_driver</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":" The `version` should be set to `GIT_MERGE_DRIVER_VERSION`. "},{"type":"git_merge_driver_init_fn","name":"initialize","comments":" Called when the merge driver is first used for any file. "},{"type":"git_merge_driver_shutdown_fn","name":"shutdown","comments":" Called when the merge driver is unregistered from the system. "},{"type":"git_merge_driver_apply_fn","name":"apply","comments":" Called to merge the contents of a conflict.  If this function\n returns `GIT_PASSTHROUGH` then the default (`text`) merge driver\n will instead be invoked.  If this function returns\n `GIT_EMERGECONFLICT` then the file will remain conflicted."}],"used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_driver_source",{"decl":"git_merge_driver_source","type":"struct","value":"git_merge_driver_source","file":"sys/merge.h","line":36,"lineto":36,"tdef":"typedef","description":" A merge driver source represents the file to be merged","comments":"","used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","const char * default_driver","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":290,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"const char *","name":"default_driver","comments":" Default merge driver to be used when both sides of a merge have\n changed.  The default is the `text` driver."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver."},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":345,"lineto":363,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nint (*)(git_odb_backend *, const git_oid *) freshen\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"freshen","comments":" \"Freshens\" an already existing object, updating its last-used\n time.  This occurs when `git_odb_write` was called, but the\n object already existed (and will not be re-written).  The\n underlying implementation may want to update last-used timestamps.\n\n If callers implement this, they should return `0` if the object\n exists and was freshened, and non-zero otherwise."},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_expand_id",{"decl":["git_oid id","unsigned short length","git_otype type"],"type":"struct","value":"git_odb_expand_id","file":"odb.h","line":180,"lineto":195,"block":"git_oid id\nunsigned short length\ngit_otype type","tdef":"typedef","description":" The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.","comments":"","fields":[{"type":"git_oid","name":"id","comments":" The object ID to expand "},{"type":"unsigned short","name":"length","comments":" The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)"},{"type":"git_otype","name":"type","comments":" The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID."}],"used":{"returns":[],"needs":["git_odb_expand_ids"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_proxy_options",{"decl":["unsigned int version","git_proxy_t type","const char * url","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","void * payload"],"type":"struct","value":"git_proxy_options","file":"proxy.h","line":42,"lineto":77,"block":"unsigned int version\ngit_proxy_t type\nconst char * url\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\nvoid * payload","tdef":"typedef","description":" Options for connecting through a proxy","comments":"<p>Note that not all types may be supported, depending on the platform and compilation options.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_proxy_t","name":"type","comments":" The type of proxy to use, by URL, auto-detect."},{"type":"const char *","name":"url","comments":" The URL of the proxy."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"void *","name":"payload","comments":" Payload to be provided to the credentials and certificate\n check callbacks."}],"used":{"returns":[],"needs":["git_proxy_init_options","git_remote_connect"]}}],["git_proxy_t",{"decl":["GIT_PROXY_NONE","GIT_PROXY_AUTO","GIT_PROXY_SPECIFIED"],"type":"enum","file":"proxy.h","line":18,"lineto":34,"block":"GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED","tdef":"typedef","description":" The type of proxy to use.","comments":"","fields":[{"type":"int","name":"GIT_PROXY_NONE","comments":"<p>Do not attempt to connect through a proxy</p>\n\n<p>If built against libcurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.</p>\n","value":0},{"type":"int","name":"GIT_PROXY_AUTO","comments":"<p>Try to auto-detect the proxy from the git configuration.</p>\n","value":1},{"type":"int","name":"GIT_PROXY_SPECIFIED","comments":"<p>Connect via the URL given in the options</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":585,"lineto":612,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":343,"lineto":360,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":636,"lineto":665,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":497,"lineto":515,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":376,"lineto":460,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":328,"lineto":332,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":221,"lineto":229,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":244,"lineto":248,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":278,"lineto":287,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE","GIT_REPOSITORY_OPEN_NO_DOTGIT","GIT_REPOSITORY_OPEN_FROM_ENV"],"type":"enum","file":"repository.h","line":115,"lineto":121,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE\nGIT_REPOSITORY_OPEN_NO_DOTGIT\nGIT_REPOSITORY_OPEN_FROM_ENV","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks. * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by   appending /.git to the start_path; only open the repository if   start_path itself points to the git directory. * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,   respecting the environment variables used by the git command-line   tools. If set, <code>git_repository_open_ext</code> will ignore the other   flags and the <code>ceiling_dirs</code> argument, and will allow a NULL <code>path</code>   to use <code>GIT_DIR</code> or search from the current directory. The search   for a repository will respect $GIT_CEILING_DIRECTORIES and   $GIT_DISCOVERY_ACROSS_FILESYSTEM.  The opened repository will   respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and   $GIT_ALTERNATE_OBJECT_DIRECTORIES.  In the future, this flag will   also cause <code>git_repository_open_ext</code> to respect $GIT_WORK_TREE and   $GIT_COMMON_DIR; currently, <code>git_repository_open_ext</code> with this   flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is   set.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_DOTGIT","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_OPEN_FROM_ENV","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":693,"lineto":706,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":326,"lineto":339,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":53,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the output with the same default time-order method from git.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order (parents before\n children); this sorting mode can be combined with time sorting to\n produce git&#39;s &quot;time-order&quot;.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const int *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":29,"lineto":41,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const int *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy","int allow_fetch"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":163,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy\nint allow_fetch","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."},{"type":"int","name":"allow_fetch","comments":" Allow fetching from the submodule's default remote if the target\n commit isn't found. Enabled by default."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":31,"lineto":33,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_tree_update",{"decl":["git_tree_update_t action","git_oid id","git_filemode_t filemode","const char * path"],"type":"struct","value":"git_tree_update","file":"tree.h","line":434,"lineto":443,"block":"git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path","tdef":"typedef","description":" An action to perform during the update of a tree","comments":"","fields":[{"type":"git_tree_update_t","name":"action","comments":" Update action. If it's an removal, only the path is looked at "},{"type":"git_oid","name":"id","comments":" The entry's id "},{"type":"git_filemode_t","name":"filemode","comments":" The filemode/kind of object "},{"type":"const char *","name":"path","comments":" The full path from the root tree "}],"used":{"returns":[],"needs":["git_tree_create_updated"]}}],["git_tree_update_t",{"decl":["GIT_TREE_UPDATE_UPSERT","GIT_TREE_UPDATE_REMOVE"],"type":"enum","file":"tree.h","line":424,"lineto":429,"block":"GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE","tdef":"typedef","description":" The kind of update to perform","comments":"","fields":[{"type":"int","name":"GIT_TREE_UPDATE_UPSERT","comments":"<p>Update or insert an entry at the specified path </p>\n","value":0},{"type":"int","name":"GIT_TREE_UPDATE_REMOVE","comments":"<p>Remove an entry from the specified path </p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromstream","git_blob_create_fromstream_commit","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_dup","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["proxy",["git_proxy_init_options"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["time",["git_time_monotonic"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.4/add.html"],["blame.c","ex/v0.24.4/blame.html"],["cat-file.c","ex/v0.24.4/cat-file.html"],["common.c","ex/v0.24.4/common.html"],["describe.c","ex/v0.24.4/describe.html"],["diff.c","ex/v0.24.4/diff.html"],["for-each-ref.c","ex/v0.24.4/for-each-ref.html"],["general.c","ex/v0.24.4/general.html"],["init.c","ex/v0.24.4/init.html"],["log.c","ex/v0.24.4/log.html"],["network/clone.c","ex/v0.24.4/network/clone.html"],["network/common.c","ex/v0.24.4/network/common.html"],["network/fetch.c","ex/v0.24.4/network/fetch.html"],["network/git2.c","ex/v0.24.4/network/git2.html"],["network/index-pack.c","ex/v0.24.4/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.4/network/ls-remote.html"],["remote.c","ex/v0.24.4/remote.html"],["rev-list.c","ex/v0.24.4/rev-list.html"],["rev-parse.c","ex/v0.24.4/rev-parse.html"],["showindex.c","ex/v0.24.4/showindex.html"],["status.c","ex/v0.24.4/status.html"],["tag.c","ex/v0.24.4/tag.html"]]}
\ No newline at end of file
diff --git a/v0.24.5.json b/v0.24.5.json
new file mode 100644
index 0000000..d8fefc1
--- /dev/null
+++ b/v0.24.5.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_create_frombuffer","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend"],"meta":{},"lines":395},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":282},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1346},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":144},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":780},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":569},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":491},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":807},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":752},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":633},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":106},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":53},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":377},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.5/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.5/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.5/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.5/general.html#git_blob_rawsize-3","ex/v0.24.5/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return 0.    This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":203,"lineto":204,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.5/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.5/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.5/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.5/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_lookup-5","ex/v0.24.5/general.html#git_commit_lookup-6","ex/v0.24.5/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.5/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_free-8","ex/v0.24.5/general.html#git_commit_free-9","ex/v0.24.5/general.html#git_commit_free-10","ex/v0.24.5/general.html#git_commit_free-11"],"log.c":["ex/v0.24.5/log.html#git_commit_free-2","ex/v0.24.5/log.html#git_commit_free-3","ex/v0.24.5/log.html#git_commit_free-4","ex/v0.24.5/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_id-12"],"log.c":["ex/v0.24.5/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.5/log.html#git_commit_owner-7","ex/v0.24.5/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_message-3","ex/v0.24.5/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.5/general.html#git_commit_message-13","ex/v0.24.5/general.html#git_commit_message-14","ex/v0.24.5/general.html#git_commit_message-15"],"log.c":["ex/v0.24.5/log.html#git_commit_message-9","ex/v0.24.5/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.5/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_time-16","ex/v0.24.5/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.5/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.5/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.5/general.html#git_commit_author-19","ex/v0.24.5/general.html#git_commit_author-20"],"log.c":["ex/v0.24.5/log.html#git_commit_author-12","ex/v0.24.5/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.5/log.html#git_commit_tree-14","ex/v0.24.5/log.html#git_commit_tree-15","ex/v0.24.5/log.html#git_commit_tree-16","ex/v0.24.5/log.html#git_commit_tree-17","ex/v0.24.5/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.5/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.5/log.html#git_commit_parentcount-19","ex/v0.24.5/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.5/log.html#git_commit_parent-21","ex/v0.24.5/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.5/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.5/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.5/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":282,"lineto":282,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to disabled.  * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.5/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.5/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.5/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.5/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.5/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.5/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":435,"lineto":437,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":720,"lineto":722,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":736,"lineto":736,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.5/log.html#git_diff_free-24","ex/v0.24.5/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":754,"lineto":759,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.5/log.html#git_diff_tree_to_tree-26","ex/v0.24.5/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":780,"lineto":785,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":807,"lineto":811,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":836,"lineto":840,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":855,"lineto":859,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":873,"lineto":878,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":893,"lineto":895,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.5/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":942,"lineto":943,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":962,"lineto":963,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":971,"lineto":971,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":999,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1018,"lineto":1018,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1043,"lineto":1047,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.5/log.html#git_diff_print-29"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1084,"lineto":1094,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1121,"lineto":1132,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1155,"lineto":1167,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1203,"lineto":1205,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1213,"lineto":1214,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1222,"lineto":1223,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1231,"lineto":1232,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1243,"lineto":1247,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1255,"lineto":1255,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.5/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1307,"lineto":1310,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1326,"lineto":1333,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1344,"lineto":1346,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":110,"lineto":110,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.5/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.5/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.5/network/git2.html#giterr_last-1","ex/v0.24.5/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":133,"lineto":133,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":144,"lineto":144,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.5/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.5/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.5/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.5/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.5/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.5/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.5/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.5/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.5/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.5/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.5/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.5/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.5/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.5/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.5/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.5/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.5/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.5/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.5/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.5/general.html#git_index_free-29"],"init.c":["ex/v0.24.5/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":271,"lineto":271,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":280,"lineto":280,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":288,"lineto":288,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":300,"lineto":300,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":311,"lineto":311,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":332,"lineto":332,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.5/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":349,"lineto":349,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":368,"lineto":368,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.5/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":379,"lineto":379,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":392,"lineto":393,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.5/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":407,"lineto":408,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":418,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":428,"lineto":429,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":445,"lineto":445,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":457,"lineto":457,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":466,"lineto":466,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":497,"lineto":497,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":526,"lineto":529,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":545,"lineto":545,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":592,"lineto":597,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":614,"lineto":618,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":643,"lineto":647,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":658,"lineto":658,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":669,"lineto":669,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":694,"lineto":698,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":714,"lineto":719,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":728,"lineto":728,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":736,"lineto":736,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":743,"lineto":743,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":754,"lineto":756,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":768,"lineto":772,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":779,"lineto":780,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":295,"lineto":297,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":366,"lineto":371,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":382,"lineto":386,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.5/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":397,"lineto":401,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":412,"lineto":416,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":427,"lineto":431,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":442,"lineto":446,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":464,"lineto":469,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":485,"lineto":491,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":498,"lineto":498,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":516,"lineto":522,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":539,"lineto":544,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":564,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.5/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.5/blame.html#git_object_id-10","ex/v0.24.5/blame.html#git_object_id-11","ex/v0.24.5/blame.html#git_object_id-12","ex/v0.24.5/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_object_id-12","ex/v0.24.5/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.5/log.html#git_object_id-34","ex/v0.24.5/log.html#git_object_id-35","ex/v0.24.5/log.html#git_object_id-36","ex/v0.24.5/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_object_id-4","ex/v0.24.5/rev-parse.html#git_object_id-5","ex/v0.24.5/rev-parse.html#git_object_id-6","ex/v0.24.5/rev-parse.html#git_object_id-7","ex/v0.24.5/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.5/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_object_type-14","ex/v0.24.5/cat-file.html#git_object_type-15","ex/v0.24.5/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.5/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.5/blame.html#git_object_free-14","ex/v0.24.5/blame.html#git_object_free-15","ex/v0.24.5/blame.html#git_object_free-16","ex/v0.24.5/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.5/general.html#git_object_free-32"],"log.c":["ex/v0.24.5/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_object_free-9","ex/v0.24.5/rev-parse.html#git_object_free-10","ex/v0.24.5/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.5/tag.html#git_object_free-7","ex/v0.24.5/tag.html#git_object_free-8","ex/v0.24.5/tag.html#git_object_free-9","ex/v0.24.5/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_object_type2string-18","ex/v0.24.5/cat-file.html#git_object_type2string-19","ex/v0.24.5/cat-file.html#git_object_type2string-20","ex/v0.24.5/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.5/general.html#git_object_type2string-33"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.5/general.html#git_odb_read-34"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":128,"lineto":128,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":148,"lineto":148,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":171,"lineto":172,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if objects can be found in the object database from a short OID.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.5/general.html#git_odb_write-35"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":263,"lineto":263,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":285,"lineto":285,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":356,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.5/general.html#git_odb_object_free-36"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.5/general.html#git_odb_object_data-37"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":429,"lineto":429,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.5/general.html#git_odb_object_size-38"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.5/general.html#git_odb_object_type-39"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":481,"lineto":481,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":491,"lineto":491,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.5/general.html#git_oid_fromstr-40","ex/v0.24.5/general.html#git_oid_fromstr-41","ex/v0.24.5/general.html#git_oid_fromstr-42","ex/v0.24.5/general.html#git_oid_fromstr-43","ex/v0.24.5/general.html#git_oid_fromstr-44","ex/v0.24.5/general.html#git_oid_fromstr-45","ex/v0.24.5/general.html#git_oid_fromstr-46","ex/v0.24.5/general.html#git_oid_fromstr-47"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.5/general.html#git_oid_fmt-48","ex/v0.24.5/general.html#git_oid_fmt-49","ex/v0.24.5/general.html#git_oid_fmt-50","ex/v0.24.5/general.html#git_oid_fmt-51","ex/v0.24.5/general.html#git_oid_fmt-52"],"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_oid_fmt-1","ex/v0.24.5/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.5/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.5/blame.html#git_oid_tostr-18","ex/v0.24.5/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_oid_tostr-26","ex/v0.24.5/cat-file.html#git_oid_tostr-27","ex/v0.24.5/cat-file.html#git_oid_tostr-28","ex/v0.24.5/cat-file.html#git_oid_tostr-29","ex/v0.24.5/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.5/log.html#git_oid_tostr-39","ex/v0.24.5/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_oid_tostr-12","ex/v0.24.5/rev-parse.html#git_oid_tostr-13","ex/v0.24.5/rev-parse.html#git_oid_tostr-14","ex/v0.24.5/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.5/blame.html#git_oid_cpy-20","ex/v0.24.5/blame.html#git_oid_cpy-21","ex/v0.24.5/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.5/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or -1 if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.5/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.5/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.5/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.5/general.html#git_reference_lookup-53"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.5/general.html#git_reference_target-54"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.5/general.html#git_reference_symbolic_target-55"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.5/general.html#git_reference_type-56"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.5/general.html#git_reference_list-57"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.5/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":676,"lineto":680,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.5/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.5/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":222,"lineto":222,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":231,"lineto":231,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_remote_free-6","ex/v0.24.5/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.5/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.5/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":471,"lineto":473,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":569,"lineto":571,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":613,"lineto":615,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":633,"lineto":633,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":647,"lineto":647,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":663,"lineto":668,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":684,"lineto":688,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":697,"lineto":697,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":709,"lineto":711,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":716,"lineto":716,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.5/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":724,"lineto":724,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":736,"lineto":736,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":743,"lineto":743,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":765,"lineto":769,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":777,"lineto":777,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":789,"lineto":789,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.5/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":807,"lineto":807,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.5/general.html#git_repository_open-58"],"network/git2.c":["ex/v0.24.5/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.5/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.5/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.5/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.5/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.5/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.5/log.html#git_repository_open_ext-44","ex/v0.24.5/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.5/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.5/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.5/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.5/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.5/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.5/general.html#git_repository_free-59"],"init.c":["ex/v0.24.5/init.html#git_repository_free-6"],"log.c":["ex/v0.24.5/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.5/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.5/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.5/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.5/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.5/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.5/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.5/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.5/init.html#git_repository_path-9"],"status.c":["ex/v0.24.5/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.5/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.5/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.5/general.html#git_repository_odb-60"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.5/general.html#git_repository_index-61"],"init.c":["ex/v0.24.5/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":696,"lineto":696,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":710,"lineto":710,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":718,"lineto":718,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":727,"lineto":727,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":739,"lineto":739,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":752,"lineto":752,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.5/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.5/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.5/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.5/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.5/tag.html#git_revparse_single-13","ex/v0.24.5/tag.html#git_revparse_single-14","ex/v0.24.5/tag.html#git_revparse_single-15","ex/v0.24.5/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.5/blame.html#git_revparse-27"],"log.c":["ex/v0.24.5/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.5/rev-parse.html#git_revparse-18","ex/v0.24.5/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.5/general.html#git_revwalk_new-62"],"log.c":["ex/v0.24.5/log.html#git_revwalk_new-49","ex/v0.24.5/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.5/general.html#git_revwalk_push-63"],"log.c":["ex/v0.24.5/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.5/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.5/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.5/general.html#git_revwalk_next-64"],"log.c":["ex/v0.24.5/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.5/general.html#git_revwalk_sorting-65"],"log.c":["ex/v0.24.5/log.html#git_revwalk_sorting-55","ex/v0.24.5/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.5/general.html#git_revwalk_free-66"],"log.c":["ex/v0.24.5/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.5/general.html#git_signature_new-67","ex/v0.24.5/general.html#git_signature_new-68"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.5/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.5/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.5/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.5/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_list_new-12","ex/v0.24.5/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_list_entrycount-14","ex/v0.24.5/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_byindex-16","ex/v0.24.5/status.html#git_status_byindex-17","ex/v0.24.5/status.html#git_status_byindex-18","ex/v0.24.5/status.html#git_status_byindex-19","ex/v0.24.5/status.html#git_status_byindex-20","ex/v0.24.5/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.5/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.5/general.html#git_strarray_free-69"],"remote.c":["ex/v0.24.5/remote.html#git_strarray_free-16","ex/v0.24.5/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.5/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":173,"lineto":174,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":192,"lineto":192,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":221,"lineto":224,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":231,"lineto":231,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":251,"lineto":254,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.5/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":281,"lineto":286,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":310,"lineto":312,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":325,"lineto":325,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.5/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":344,"lineto":344,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.5/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":362,"lineto":362,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":383,"lineto":383,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":397,"lineto":397,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":426,"lineto":426,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":451,"lineto":452,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":464,"lineto":467,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":479,"lineto":480,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":492,"lineto":495,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":508,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":521,"lineto":524,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":539,"lineto":539,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":554,"lineto":557,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":567,"lineto":567,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":581,"lineto":583,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":595,"lineto":595,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":611,"lineto":615,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.5/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":631,"lineto":633,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":104,"lineto":106,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":53,"lineto":53,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":117,"lineto":119,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":131,"lineto":131,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":175,"lineto":176,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":189,"lineto":192,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":202,"lineto":205,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":215,"lineto":218,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":229,"lineto":229,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":350,"lineto":353,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":374,"lineto":377,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.5/general.html#git_tag_lookup-70"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.5/general.html#git_tag_target-71"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.5/general.html#git_tag_target_type-72"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.5/general.html#git_tag_name-73"],"tag.c":["ex/v0.24.5/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tag_message-39","ex/v0.24.5/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.5/general.html#git_tag_message-74"],"tag.c":["ex/v0.24.5/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.5/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.5/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.5/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.5/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.5/general.html#git_tree_lookup-75","ex/v0.24.5/general.html#git_tree_lookup-76"],"init.c":["ex/v0.24.5/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.5/diff.html#git_tree_free-17","ex/v0.24.5/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.5/init.html#git_tree_free-15"],"log.c":["ex/v0.24.5/log.html#git_tree_free-58","ex/v0.24.5/log.html#git_tree_free-59","ex/v0.24.5/log.html#git_tree_free-60","ex/v0.24.5/log.html#git_tree_free-61","ex/v0.24.5/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.5/general.html#git_tree_entrycount-77"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.5/general.html#git_tree_entry_byname-78"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.5/general.html#git_tree_entry_byindex-79"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.5/general.html#git_tree_entry_name-80","ex/v0.24.5/general.html#git_tree_entry_name-81"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.5/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.5/general.html#git_tree_entry_to_object-82"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":347,"lineto":351,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":363,"lineto":367,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":446,"lineto":449,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":493,"lineto":496,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":513,"lineto":516,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":566,"lineto":570,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":366,"lineto":366,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":484,"lineto":487,"block":"git_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":469,"lineto":481,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":457,"lineto":466,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":325,"lineto":332,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":281,"lineto":287,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":681,"lineto":707,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":575,"lineto":644,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1260,"lineto":1267,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1272,"lineto":1294,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1023,"lineto":1029,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":501,"lineto":508,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":" Starting line number in old_file "},{"type":"int","name":"old_lines","comments":" Number of lines in old_file "},{"type":"int","name":"new_start","comments":" Starting line number in new_file "},{"type":"int","name":"new_lines","comments":" Number of lines in new_file "},{"type":"size_t","name":"header_len","comments":" Number of bytes in header text "},{"type":"char [128]","name":"header","comments":" Header text, NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":548,"lineto":556,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":527,"lineto":543,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":396,"lineto":416,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":649,"lineto":659,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1174,"lineto":1174,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1179,"lineto":1194,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":70,"lineto":102,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":523,"lineto":555,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS"],"type":"enum","file":"common.h","line":144,"lineto":161,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":302,"lineto":331,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":281,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":336,"lineto":354,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":577,"lineto":599,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":495,"lineto":513,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":374,"lineto":458,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":687,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":324,"lineto":337,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":157,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.5/add.html"],["blame.c","ex/v0.24.5/blame.html"],["cat-file.c","ex/v0.24.5/cat-file.html"],["common.c","ex/v0.24.5/common.html"],["describe.c","ex/v0.24.5/describe.html"],["diff.c","ex/v0.24.5/diff.html"],["for-each-ref.c","ex/v0.24.5/for-each-ref.html"],["general.c","ex/v0.24.5/general.html"],["init.c","ex/v0.24.5/init.html"],["log.c","ex/v0.24.5/log.html"],["network/clone.c","ex/v0.24.5/network/clone.html"],["network/common.c","ex/v0.24.5/network/common.html"],["network/fetch.c","ex/v0.24.5/network/fetch.html"],["network/git2.c","ex/v0.24.5/network/git2.html"],["network/index-pack.c","ex/v0.24.5/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.5/network/ls-remote.html"],["remote.c","ex/v0.24.5/remote.html"],["rev-list.c","ex/v0.24.5/rev-list.html"],["rev-parse.c","ex/v0.24.5/rev-parse.html"],["showindex.c","ex/v0.24.5/showindex.html"],["status.c","ex/v0.24.5/status.html"],["tag.c","ex/v0.24.5/tag.html"]]}
\ No newline at end of file
diff --git a/v0.24.6.json b/v0.24.6.json
new file mode 100644
index 0000000..2b82431
--- /dev/null
+++ b/v0.24.6.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromchunks","git_blob_create_frombuffer","git_blob_is_binary"],"meta":{},"lines":217},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend"],"meta":{},"lines":395},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":282},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":158},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1346},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":144},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":780},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":569},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":491},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":730},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_rename_problem_cb","git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":807},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":752},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":293},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_dup","git_signature_free"],"meta":{},"lines":86},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":633},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":106},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":53},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":377},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel"],"meta":{},"lines":348},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk"],"meta":{},"lines":410},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.24.6/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.24.6/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.24.6/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.24.6/general.html#git_blob_rawsize-3","ex/v0.24.6/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromchunks":{"type":"function","file":"blob.h","line":187,"lineto":192,"args":[{"name":"id","type":"git_oid *","comment":"Return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."},{"name":"callback","type":"git_blob_chunk_cb","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *hintpath, git_blob_chunk_cb callback, void *payload","sig":"git_oid *::git_repository *::const char *::git_blob_chunk_cb::void *","return":{"type":"int","comment":" 0 or error code (from either libgit2 or callback function)"},"description":"<p>Write a loose blob to the Object Database from a\n provider of chunks of data.</p>\n","comments":"<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n\n<p>The implementation of the callback MUST respect the following rules:</p>\n\n<ul>\n<li><p><code>content</code> must be filled by the callback. The maximum number of    bytes that the buffer can accept per call is defined by the    <code>max_length</code> parameter. Allocation and freeing of the buffer will    be taken care of by libgit2.</p></li>\n<li><p>The <code>callback</code> must return the number of bytes that have been    written to the <code>content</code> buffer.</p></li>\n<li><p>When there is no more data to stream, <code>callback</code> should return 0.    This will prevent it from being invoked anymore.</p></li>\n<li><p>If an error occurs, the callback should return a negative value.    This value will be returned to the caller.</p></li>\n</ul>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":203,"lineto":204,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":217,"lineto":217,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.24.6/diff.html#git_buf_free-1"],"remote.c":["ex/v0.24.6/remote.html#git_buf_free-1"],"tag.c":["ex/v0.24.6/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.24.6/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_lookup-5","ex/v0.24.6/general.html#git_commit_lookup-6","ex/v0.24.6/general.html#git_commit_lookup-7"],"log.c":["ex/v0.24.6/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_free-8","ex/v0.24.6/general.html#git_commit_free-9","ex/v0.24.6/general.html#git_commit_free-10","ex/v0.24.6/general.html#git_commit_free-11"],"log.c":["ex/v0.24.6/log.html#git_commit_free-2","ex/v0.24.6/log.html#git_commit_free-3","ex/v0.24.6/log.html#git_commit_free-4","ex/v0.24.6/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_id-12"],"log.c":["ex/v0.24.6/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.6/log.html#git_commit_owner-7","ex/v0.24.6/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_message-3","ex/v0.24.6/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.24.6/general.html#git_commit_message-13","ex/v0.24.6/general.html#git_commit_message-14","ex/v0.24.6/general.html#git_commit_message-15"],"log.c":["ex/v0.24.6/log.html#git_commit_message-9","ex/v0.24.6/log.html#git_commit_message-10"],"tag.c":["ex/v0.24.6/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_time-16","ex/v0.24.6/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.24.6/general.html#git_commit_committer-18"],"log.c":["ex/v0.24.6/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.24.6/general.html#git_commit_author-19","ex/v0.24.6/general.html#git_commit_author-20"],"log.c":["ex/v0.24.6/log.html#git_commit_author-12","ex/v0.24.6/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.24.6/log.html#git_commit_tree-14","ex/v0.24.6/log.html#git_commit_tree-15","ex/v0.24.6/log.html#git_commit_tree-16","ex/v0.24.6/log.html#git_commit_tree-17","ex/v0.24.6/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.24.6/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.24.6/log.html#git_commit_parentcount-19","ex/v0.24.6/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_parent-22"],"log.c":["ex/v0.24.6/log.html#git_commit_parent-21","ex/v0.24.6/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.24.6/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.24.6/general.html#git_commit_create_v-23"],"init.c":["ex/v0.24.6/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":136,"lineto":136,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":282,"lineto":282,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to disabled.  * opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.24.6/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.6/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.24.6/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":120,"lineto":123,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.6/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":137,"lineto":140,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.24.6/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":150,"lineto":153,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.24.6/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":158,"lineto":158,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":435,"lineto":437,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":720,"lineto":722,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":736,"lineto":736,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_free-2"],"log.c":["ex/v0.24.6/log.html#git_diff_free-24","ex/v0.24.6/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":754,"lineto":759,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.24.6/log.html#git_diff_tree_to_tree-26","ex/v0.24.6/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":780,"lineto":785,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":807,"lineto":811,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":836,"lineto":840,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":855,"lineto":859,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":873,"lineto":878,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":893,"lineto":895,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":929,"lineto":929,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.24.6/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":942,"lineto":943,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":962,"lineto":963,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":971,"lineto":971,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":999,"lineto":1005,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1018,"lineto":1018,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1043,"lineto":1047,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_print-9"],"log.c":["ex/v0.24.6/log.html#git_diff_print-29"]}},"git_diff_blobs":{"type":"function","file":"diff.h","line":1084,"lineto":1094,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1121,"lineto":1132,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1155,"lineto":1167,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1203,"lineto":1205,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1213,"lineto":1214,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1222,"lineto":1223,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1231,"lineto":1232,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1243,"lineto":1247,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1255,"lineto":1255,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.24.6/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1307,"lineto":1310,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1326,"lineto":1333,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1344,"lineto":1346,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":110,"lineto":110,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.24.6/general.html#giterr_last-27"],"network/clone.c":["ex/v0.24.6/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.24.6/network/git2.html#giterr_last-1","ex/v0.24.6/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":115,"lineto":115,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":133,"lineto":133,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":144,"lineto":144,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.6/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.24.6/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.24.6/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.24.6/general.html#git_libgit2_init-28"],"init.c":["ex/v0.24.6/init.html#git_libgit2_init-2"],"log.c":["ex/v0.24.6/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.24.6/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.24.6/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.24.6/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.24.6/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.24.6/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.24.6/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.24.6/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.24.6/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.24.6/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.24.6/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.24.6/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.24.6/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.24.6/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.6/general.html#git_index_free-29"],"init.c":["ex/v0.24.6/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":271,"lineto":271,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":280,"lineto":280,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":288,"lineto":288,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":300,"lineto":300,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":311,"lineto":311,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":332,"lineto":332,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.24.6/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":349,"lineto":349,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":368,"lineto":368,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.24.6/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":379,"lineto":379,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":392,"lineto":393,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.24.6/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":407,"lineto":408,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":418,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":428,"lineto":429,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":445,"lineto":445,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":457,"lineto":457,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":466,"lineto":466,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":497,"lineto":497,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":526,"lineto":529,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":545,"lineto":545,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":592,"lineto":597,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":614,"lineto":618,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":643,"lineto":647,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":658,"lineto":658,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":669,"lineto":669,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":694,"lineto":698,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":714,"lineto":719,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":728,"lineto":728,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":736,"lineto":736,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":743,"lineto":743,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":754,"lineto":756,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":768,"lineto":772,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":779,"lineto":780,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":295,"lineto":297,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":366,"lineto":371,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":382,"lineto":386,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.24.6/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":397,"lineto":401,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":412,"lineto":416,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":427,"lineto":431,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":442,"lineto":446,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":464,"lineto":469,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":485,"lineto":491,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":498,"lineto":498,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":516,"lineto":522,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":539,"lineto":544,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":564,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.24.6/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.24.6/blame.html#git_object_id-10","ex/v0.24.6/blame.html#git_object_id-11","ex/v0.24.6/blame.html#git_object_id-12","ex/v0.24.6/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_object_id-12","ex/v0.24.6/cat-file.html#git_object_id-13"],"log.c":["ex/v0.24.6/log.html#git_object_id-34","ex/v0.24.6/log.html#git_object_id-35","ex/v0.24.6/log.html#git_object_id-36","ex/v0.24.6/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_object_id-4","ex/v0.24.6/rev-parse.html#git_object_id-5","ex/v0.24.6/rev-parse.html#git_object_id-6","ex/v0.24.6/rev-parse.html#git_object_id-7","ex/v0.24.6/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.24.6/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_object_type-14","ex/v0.24.6/cat-file.html#git_object_type-15","ex/v0.24.6/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.24.6/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.24.6/blame.html#git_object_free-14","ex/v0.24.6/blame.html#git_object_free-15","ex/v0.24.6/blame.html#git_object_free-16","ex/v0.24.6/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_object_free-17"],"general.c":["ex/v0.24.6/general.html#git_object_free-32"],"log.c":["ex/v0.24.6/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_object_free-9","ex/v0.24.6/rev-parse.html#git_object_free-10","ex/v0.24.6/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.24.6/tag.html#git_object_free-7","ex/v0.24.6/tag.html#git_object_free-8","ex/v0.24.6/tag.html#git_object_free-9","ex/v0.24.6/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_object_type2string-18","ex/v0.24.6/cat-file.html#git_object_type2string-19","ex/v0.24.6/cat-file.html#git_object_type2string-20","ex/v0.24.6/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.24.6/general.html#git_object_type2string-33"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":56,"lineto":56,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":73,"lineto":73,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":80,"lineto":80,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":99,"lineto":99,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.24.6/general.html#git_odb_read-34"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":128,"lineto":128,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":148,"lineto":148,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":159,"lineto":159,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":171,"lineto":172,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if objects can be found in the object database from a short OID.</p>\n","comments":"","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":192,"lineto":192,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":207,"lineto":207,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":227,"lineto":227,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.6/general.html#git_odb_write-35"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":250,"lineto":250,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":263,"lineto":263,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":278,"lineto":278,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":285,"lineto":285,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":292,"lineto":292,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":318,"lineto":318,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":338,"lineto":342,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":356,"lineto":356,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":371,"lineto":371,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":385,"lineto":385,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":395,"lineto":395,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.24.6/general.html#git_odb_object_free-36"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":405,"lineto":405,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":418,"lineto":418,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.24.6/general.html#git_odb_object_data-37"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":429,"lineto":429,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.24.6/general.html#git_odb_object_size-38"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":437,"lineto":437,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.24.6/general.html#git_odb_object_type-39"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":452,"lineto":452,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":473,"lineto":473,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":481,"lineto":481,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":491,"lineto":491,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.6/general.html#git_oid_fromstr-40","ex/v0.24.6/general.html#git_oid_fromstr-41","ex/v0.24.6/general.html#git_oid_fromstr-42","ex/v0.24.6/general.html#git_oid_fromstr-43","ex/v0.24.6/general.html#git_oid_fromstr-44","ex/v0.24.6/general.html#git_oid_fromstr-45","ex/v0.24.6/general.html#git_oid_fromstr-46","ex/v0.24.6/general.html#git_oid_fromstr-47"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.24.6/general.html#git_oid_fmt-48","ex/v0.24.6/general.html#git_oid_fmt-49","ex/v0.24.6/general.html#git_oid_fmt-50","ex/v0.24.6/general.html#git_oid_fmt-51","ex/v0.24.6/general.html#git_oid_fmt-52"],"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_oid_fmt-1","ex/v0.24.6/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.24.6/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.24.6/blame.html#git_oid_tostr-18","ex/v0.24.6/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_oid_tostr-26","ex/v0.24.6/cat-file.html#git_oid_tostr-27","ex/v0.24.6/cat-file.html#git_oid_tostr-28","ex/v0.24.6/cat-file.html#git_oid_tostr-29","ex/v0.24.6/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.24.6/log.html#git_oid_tostr-39","ex/v0.24.6/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_oid_tostr-12","ex/v0.24.6/rev-parse.html#git_oid_tostr-13","ex/v0.24.6/rev-parse.html#git_oid_tostr-14","ex/v0.24.6/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.6/blame.html#git_oid_cpy-20","ex/v0.24.6/blame.html#git_oid_cpy-21","ex/v0.24.6/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.24.6/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"uint32_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or -1 if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.6/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.24.6/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.24.6/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.6/general.html#git_reference_lookup-53"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.6/general.html#git_reference_target-54"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.6/general.html#git_reference_symbolic_target-55"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.6/general.html#git_reference_type-56"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.24.6/general.html#git_reference_list-57"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":469,"lineto":469,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.24.6/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":478,"lineto":480,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":502,"lineto":505,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":514,"lineto":514,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":527,"lineto":527,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":534,"lineto":534,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":554,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":568,"lineto":568,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":580,"lineto":580,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":590,"lineto":590,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":600,"lineto":600,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":610,"lineto":610,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":620,"lineto":620,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":676,"lineto":680,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":697,"lineto":700,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":716,"lineto":716,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":730,"lineto":730,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.24.6/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":39,"lineto":43,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":56,"lineto":61,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":74,"lineto":77,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.24.6/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":102,"lineto":102,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":110,"lineto":110,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":118,"lineto":118,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":129,"lineto":129,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":140,"lineto":140,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":153,"lineto":153,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":166,"lineto":166,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":179,"lineto":179,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":190,"lineto":190,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":203,"lineto":203,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":214,"lineto":214,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":222,"lineto":222,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":231,"lineto":231,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_remote_free-6","ex/v0.24.6/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.24.6/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.24.6/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":471,"lineto":473,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":569,"lineto":571,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":613,"lineto":615,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":633,"lineto":633,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":647,"lineto":647,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":663,"lineto":668,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":684,"lineto":688,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":697,"lineto":697,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":709,"lineto":711,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":716,"lineto":716,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.24.6/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":724,"lineto":724,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":736,"lineto":736,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":743,"lineto":743,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":765,"lineto":769,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":777,"lineto":777,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":789,"lineto":789,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.24.6/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":807,"lineto":807,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.6/general.html#git_repository_open-58"],"network/git2.c":["ex/v0.24.6/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.24.6/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.24.6/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.24.6/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.24.6/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.24.6/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.24.6/log.html#git_repository_open_ext-44","ex/v0.24.6/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.24.6/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.24.6/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":139,"lineto":139,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.24.6/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.24.6/describe.html#git_repository_free-7"],"diff.c":["ex/v0.24.6/diff.html#git_repository_free-16"],"general.c":["ex/v0.24.6/general.html#git_repository_free-59"],"init.c":["ex/v0.24.6/init.html#git_repository_free-6"],"log.c":["ex/v0.24.6/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.24.6/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.24.6/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.24.6/status.html#git_repository_free-6"],"tag.c":["ex/v0.24.6/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":169,"lineto":172,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.6/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":281,"lineto":283,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":298,"lineto":301,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.6/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":316,"lineto":316,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.24.6/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":328,"lineto":328,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":340,"lineto":340,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":352,"lineto":352,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":363,"lineto":363,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.6/init.html#git_repository_path-9"],"status.c":["ex/v0.24.6/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":374,"lineto":374,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.24.6/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":393,"lineto":394,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":402,"lineto":402,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.24.6/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":418,"lineto":418,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":434,"lineto":434,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":450,"lineto":450,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.24.6/general.html#git_repository_odb-60"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":466,"lineto":466,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":482,"lineto":482,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.24.6/general.html#git_repository_index-61"],"init.c":["ex/v0.24.6/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":500,"lineto":500,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":507,"lineto":507,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":516,"lineto":516,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":535,"lineto":538,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":555,"lineto":558,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":583,"lineto":588,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":608,"lineto":610,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":628,"lineto":630,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":644,"lineto":646,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":665,"lineto":666,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":696,"lineto":696,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":710,"lineto":710,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":718,"lineto":718,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":727,"lineto":727,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":739,"lineto":739,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":752,"lineto":752,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.6/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.24.6/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.24.6/describe.html#git_revparse_single-8"],"log.c":["ex/v0.24.6/log.html#git_revparse_single-47"],"tag.c":["ex/v0.24.6/tag.html#git_revparse_single-13","ex/v0.24.6/tag.html#git_revparse_single-14","ex/v0.24.6/tag.html#git_revparse_single-15","ex/v0.24.6/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.24.6/blame.html#git_revparse-27"],"log.c":["ex/v0.24.6/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.24.6/rev-parse.html#git_revparse-18","ex/v0.24.6/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":75,"lineto":75,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.6/general.html#git_revwalk_new-62"],"log.c":["ex/v0.24.6/log.html#git_revwalk_new-49","ex/v0.24.6/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":90,"lineto":90,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":109,"lineto":109,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.6/general.html#git_revwalk_push-63"],"log.c":["ex/v0.24.6/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":127,"lineto":127,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":135,"lineto":135,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.24.6/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":150,"lineto":150,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.24.6/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":169,"lineto":169,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":177,"lineto":177,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":188,"lineto":188,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":199,"lineto":199,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":219,"lineto":219,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.6/general.html#git_revwalk_next-64"],"log.c":["ex/v0.24.6/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":230,"lineto":230,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.24.6/general.html#git_revwalk_sorting-65"],"log.c":["ex/v0.24.6/log.html#git_revwalk_sorting-55","ex/v0.24.6/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":245,"lineto":245,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":252,"lineto":252,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":260,"lineto":260,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.24.6/general.html#git_revwalk_free-66"],"log.c":["ex/v0.24.6/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":269,"lineto":269,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":290,"lineto":293,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.24.6/general.html#git_signature_new-67","ex/v0.24.6/general.html#git_signature_new-68"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.6/init.html#git_signature_default-12"],"tag.c":["ex/v0.24.6/tag.html#git_signature_default-17"]}},"git_signature_dup":{"type":"function","file":"signature.h","line":75,"lineto":75,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":86,"lineto":86,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.24.6/init.html#git_signature_free-13"],"tag.c":["ex/v0.24.6/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_list_new-12","ex/v0.24.6/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_list_entrycount-14","ex/v0.24.6/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_byindex-16","ex/v0.24.6/status.html#git_status_byindex-17","ex/v0.24.6/status.html#git_status_byindex-18","ex/v0.24.6/status.html#git_status_byindex-19","ex/v0.24.6/status.html#git_status_byindex-20","ex/v0.24.6/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.24.6/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.24.6/general.html#git_strarray_free-69"],"remote.c":["ex/v0.24.6/remote.html#git_strarray_free-16","ex/v0.24.6/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.24.6/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":173,"lineto":174,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":192,"lineto":192,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n containing repository.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":221,"lineto":224,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":231,"lineto":231,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":251,"lineto":254,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.6/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":281,"lineto":286,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":298,"lineto":298,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":310,"lineto":312,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":325,"lineto":325,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.24.6/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":344,"lineto":344,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.6/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":362,"lineto":362,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":383,"lineto":383,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":397,"lineto":397,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":426,"lineto":426,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":451,"lineto":452,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":464,"lineto":467,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":479,"lineto":480,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":492,"lineto":495,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":508,"lineto":509,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":521,"lineto":524,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":539,"lineto":539,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":554,"lineto":557,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":567,"lineto":567,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":581,"lineto":583,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":595,"lineto":595,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":611,"lineto":615,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.24.6/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":631,"lineto":633,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":104,"lineto":106,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":53,"lineto":53,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":117,"lineto":119,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":131,"lineto":131,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":147,"lineto":147,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":175,"lineto":176,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":189,"lineto":192,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":202,"lineto":205,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":215,"lineto":218,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":229,"lineto":229,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":350,"lineto":353,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":362,"lineto":365,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":374,"lineto":377,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.24.6/general.html#git_tag_lookup-70"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.24.6/general.html#git_tag_target-71"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.24.6/general.html#git_tag_target_type-72"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.24.6/general.html#git_tag_name-73"],"tag.c":["ex/v0.24.6/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tag_message-39","ex/v0.24.6/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.24.6/general.html#git_tag_message-74"],"tag.c":["ex/v0.24.6/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.6/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.6/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.6/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.24.6/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.24.6/general.html#git_tree_lookup-75","ex/v0.24.6/general.html#git_tree_lookup-76"],"init.c":["ex/v0.24.6/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.24.6/diff.html#git_tree_free-17","ex/v0.24.6/diff.html#git_tree_free-18"],"init.c":["ex/v0.24.6/init.html#git_tree_free-15"],"log.c":["ex/v0.24.6/log.html#git_tree_free-58","ex/v0.24.6/log.html#git_tree_free-59","ex/v0.24.6/log.html#git_tree_free-60","ex/v0.24.6/log.html#git_tree_free-61","ex/v0.24.6/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.24.6/general.html#git_tree_entrycount-77"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.6/general.html#git_tree_entry_byname-78"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.24.6/general.html#git_tree_entry_byindex-79"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.24.6/general.html#git_tree_entry_name-80","ex/v0.24.6/general.html#git_tree_entry_name-81"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.24.6/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.24.6/general.html#git_tree_entry_to_object-82"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":347,"lineto":351,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":363,"lineto":367,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":446,"lineto":449,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":493,"lineto":496,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":513,"lineto":516,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":566,"lineto":570,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":26,"lineto":26,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, unsigned int current, unsigned int total, void *payload","sig":"int::unsigned int::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_remote_rename_problem_cb":{"type":"callback","file":"remote.h","line":28,"lineto":28,"args":[{"name":"problematic_refspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *problematic_refspec, void *payload","sig":"const char *::void *","return":{"type":"int","comment":null},"description":"<p>git2/remote.h</p>\n","comments":"<p>@{</p>\n"},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":366,"lineto":366,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":279,"lineto":281,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromchunks","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":""},{"type":"unsigned int","name":"describe_strategy","comments":" default: 10 "},{"type":"const char *","name":"pattern","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":484,"lineto":487,"block":"git_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":469,"lineto":481,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":457,"lineto":466,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":325,"lineto":332,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode"],"type":"struct","value":"git_diff_file","file":"diff.h","line":281,"lineto":287,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>oid</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":681,"lineto":707,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":575,"lineto":644,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1260,"lineto":1267,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1272,"lineto":1294,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1023,"lineto":1029,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":501,"lineto":508,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":" Starting line number in old_file "},{"type":"int","name":"old_lines","comments":" Number of lines in old_file "},{"type":"int","name":"new_start","comments":" Starting line number in new_file "},{"type":"int","name":"new_lines","comments":" Number of lines in new_file "},{"type":"size_t","name":"header_len","comments":" Number of bytes in header text "},{"type":"char [128]","name":"header","comments":" Header text, NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":548,"lineto":556,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":527,"lineto":543,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":396,"lineto":416,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":649,"lineto":659,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1174,"lineto":1174,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1179,"lineto":1194,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM"],"type":"enum","file":"errors.h","line":70,"lineto":102,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":116,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":523,"lineto":555,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS"],"type":"enum","file":"common.h","line":144,"lineto":161,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":302,"lineto":331,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":281,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content. "},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":336,"lineto":354,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":577,"lineto":599,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":625,"lineto":654,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":495,"lineto":513,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":374,"lineto":458,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":202,"lineto":210,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":225,"lineto":229,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":259,"lineto":268,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE"],"type":"enum","file":"repository.h","line":99,"lineto":103,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":674,"lineto":687,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":324,"lineto":337,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":55,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the repository contents in no particular ordering;\n this sorting is arbitrary, implementation-specific\n and subject to change at any time.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order\n (parents before children); this sorting mode\n can be combined with time sorting.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const char *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":28,"lineto":40,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const char *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const char *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":157,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":30,"lineto":32,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromchunks","git_blob_create_fromdisk","git_blob_create_fromworkdir","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_update_all","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.24.6/add.html"],["blame.c","ex/v0.24.6/blame.html"],["cat-file.c","ex/v0.24.6/cat-file.html"],["common.c","ex/v0.24.6/common.html"],["describe.c","ex/v0.24.6/describe.html"],["diff.c","ex/v0.24.6/diff.html"],["for-each-ref.c","ex/v0.24.6/for-each-ref.html"],["general.c","ex/v0.24.6/general.html"],["init.c","ex/v0.24.6/init.html"],["log.c","ex/v0.24.6/log.html"],["network/clone.c","ex/v0.24.6/network/clone.html"],["network/common.c","ex/v0.24.6/network/common.html"],["network/fetch.c","ex/v0.24.6/network/fetch.html"],["network/git2.c","ex/v0.24.6/network/git2.html"],["network/index-pack.c","ex/v0.24.6/network/index-pack.html"],["network/ls-remote.c","ex/v0.24.6/network/ls-remote.html"],["remote.c","ex/v0.24.6/remote.html"],["rev-list.c","ex/v0.24.6/rev-list.html"],["rev-parse.c","ex/v0.24.6/rev-parse.html"],["showindex.c","ex/v0.24.6/showindex.html"],["status.c","ex/v0.24.6/status.html"],["tag.c","ex/v0.24.6/tag.html"]]}
\ No newline at end of file
diff --git a/v0.25.0.json b/v0.25.0.json
new file mode 100644
index 0000000..28611f1
--- /dev/null
+++ b/v0.25.0.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_frombuffer","git_blob_is_binary","git_blob_dup"],"meta":{},"lines":228},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend","git_commit_create_buffer","git_commit_create_with_signature","git_commit_dup"],"meta":{},"lines":471},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":302},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":161},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_to_buf","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_from_buffer","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1401},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":145},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_version","git_index_set_version","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":805},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":578},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":537},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"proxy.h","functions":["git_proxy_init_options"],"meta":{},"lines":88},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_dup","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":741},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":820},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":771},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":291},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_from_buffer","git_signature_dup","git_signature_free"],"meta":{},"lines":99},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":641},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/merge.h","functions":["git_merge_driver_init_fn","git_merge_driver_shutdown_fn","git_merge_driver_apply_fn"],"meta":{},"lines":135},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":117},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":54},{"file":"sys/time.h","functions":["git_time_monotonic"],"meta":{},"lines":27},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":379},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel","git_tag_dup"],"meta":{},"lines":357},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk","git_tree_dup","git_tree_create_updated"],"meta":{},"lines":465},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.25.0/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.25.0/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.25.0/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.25.0/general.html#git_blob_rawsize-3","ex/v0.25.0/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromstream":{"type":"function","file":"blob.h","line":178,"lineto":181,"args":[{"name":"out","type":"git_writestream **","comment":"the stream into which to write"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."}],"argline":"git_writestream **out, git_repository *repo, const char *hintpath","sig":"git_writestream **::git_repository *::const char *","return":{"type":"int","comment":" 0 or error code"},"description":"<p>Create a stream to write a new blob into the object db</p>\n","comments":"<p>This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use <code>git_blob_create_frombuffer()</code>. If you do not, but know the size of the contents (and don&#39;t want/need to perform filtering), use <code>git_odb_open_wstream()</code>.</p>\n\n<p>Don&#39;t close this stream yourself but pass it to <code>git_blob_create_fromstream_commit()</code> to commit the write to the object db and get the object id.</p>\n\n<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n","group":"blob"},"git_blob_create_fromstream_commit":{"type":"function","file":"blob.h","line":192,"lineto":194,"args":[{"name":"out","type":"git_oid *","comment":"the id of the new blob"},{"name":"stream","type":"git_writestream *","comment":"the stream to close"}],"argline":"git_oid *out, git_writestream *stream","sig":"git_oid *::git_writestream *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Close the stream and write the blob to the object db</p>\n","comments":"<p>The stream will be closed and freed.</p>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":205,"lineto":206,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_blob_dup":{"type":"function","file":"blob.h","line":228,"lineto":228,"args":[{"name":"out","type":"git_blob **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_blob *","comment":"Original object to copy"}],"argline":"git_blob **out, git_blob *source","sig":"git_blob **::git_blob *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a blob. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.25.0/diff.html#git_buf_free-1"],"remote.c":["ex/v0.25.0/remote.html#git_buf_free-1"],"tag.c":["ex/v0.25.0/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.25.0/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_lookup-5","ex/v0.25.0/general.html#git_commit_lookup-6","ex/v0.25.0/general.html#git_commit_lookup-7"],"log.c":["ex/v0.25.0/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_free-8","ex/v0.25.0/general.html#git_commit_free-9","ex/v0.25.0/general.html#git_commit_free-10","ex/v0.25.0/general.html#git_commit_free-11"],"log.c":["ex/v0.25.0/log.html#git_commit_free-2","ex/v0.25.0/log.html#git_commit_free-3","ex/v0.25.0/log.html#git_commit_free-4","ex/v0.25.0/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_id-12"],"log.c":["ex/v0.25.0/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.25.0/log.html#git_commit_owner-7","ex/v0.25.0/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_message-3","ex/v0.25.0/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.25.0/general.html#git_commit_message-13","ex/v0.25.0/general.html#git_commit_message-14","ex/v0.25.0/general.html#git_commit_message-15"],"log.c":["ex/v0.25.0/log.html#git_commit_message-9","ex/v0.25.0/log.html#git_commit_message-10"],"tag.c":["ex/v0.25.0/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_time-16","ex/v0.25.0/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.25.0/general.html#git_commit_committer-18"],"log.c":["ex/v0.25.0/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.25.0/general.html#git_commit_author-19","ex/v0.25.0/general.html#git_commit_author-20"],"log.c":["ex/v0.25.0/log.html#git_commit_author-12","ex/v0.25.0/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.25.0/log.html#git_commit_tree-14","ex/v0.25.0/log.html#git_commit_tree-15","ex/v0.25.0/log.html#git_commit_tree-16","ex/v0.25.0/log.html#git_commit_tree-17","ex/v0.25.0/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.25.0/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.25.0/log.html#git_commit_parentcount-19","ex/v0.25.0/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_parent-22"],"log.c":["ex/v0.25.0/log.html#git_commit_parent-21","ex/v0.25.0/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.25.0/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.0/general.html#git_commit_create_v-23"],"init.c":["ex/v0.25.0/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_commit_create_buffer":{"type":"function","file":"commit.h","line":432,"lineto":441,"args":[{"name":"out","type":"git_buf *","comment":"the buffer into which to write the commit object content"},{"name":"repo","type":"git_repository *","comment":"Repository where the referenced tree and parents live"},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_buf *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_buf *::git_repository *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit and write it into a buffer</p>\n","comments":"<p>Create a commit as with <code>git_commit_create()</code> but instead of writing it to the objectdb, write the contents of the object into a buffer.</p>\n","group":"commit"},"git_commit_create_with_signature":{"type":"function","file":"commit.h","line":457,"lineto":462,"args":[{"name":"out","type":"git_oid *","comment":"the resulting commit id"},{"name":"repo","type":"git_repository *","comment":null},{"name":"commit_content","type":"const char *","comment":"the content of the unsigned commit object"},{"name":"signature","type":"const char *","comment":"the signature to add to the commit"},{"name":"signature_field","type":"const char *","comment":"which header field should contain this\n signature. Leave `NULL` for the default of \"gpgsig\""}],"argline":"git_oid *out, git_repository *repo, const char *commit_content, const char *signature, const char *signature_field","sig":"git_oid *::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit object from the given buffer and signature</p>\n","comments":"<p>Given the unsigned commit object&#39;s contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.</p>\n","group":"commit"},"git_commit_dup":{"type":"function","file":"commit.h","line":471,"lineto":471,"args":[{"name":"out","type":"git_commit **","comment":"Pointer to store the copy of the commit"},{"name":"source","type":"git_commit *","comment":"Original commit to copy"}],"argline":"git_commit **out, git_commit *source","sig":"git_commit **::git_commit *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a commit. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":154,"lineto":154,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":302,"lineto":302,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to enabled.\n\n* opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.25.0/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.25.0/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.25.0/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":123,"lineto":126,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.25.0/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":140,"lineto":143,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.25.0/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":153,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.25.0/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":161,"lineto":161,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":441,"lineto":443,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":736,"lineto":738,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":752,"lineto":752,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_free-2"],"log.c":["ex/v0.25.0/log.html#git_diff_free-24","ex/v0.25.0/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":770,"lineto":775,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.25.0/log.html#git_diff_tree_to_tree-26","ex/v0.25.0/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":796,"lineto":801,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":823,"lineto":827,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":852,"lineto":856,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":871,"lineto":875,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":889,"lineto":894,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":925,"lineto":927,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":945,"lineto":945,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.25.0/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":958,"lineto":959,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":978,"lineto":979,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":987,"lineto":987,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":1015,"lineto":1021,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1034,"lineto":1034,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1059,"lineto":1063,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_print-9"],"log.c":["ex/v0.25.0/log.html#git_diff_print-29"]}},"git_diff_to_buf":{"type":"function","file":"diff.h","line":1075,"lineto":1078,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf that will\n            contain the diff text"},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."}],"argline":"git_buf *out, git_diff *diff, git_diff_format_t format","sig":"git_buf *::git_diff *::git_diff_format_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Produce the complete formatted text output from a diff into a\n buffer.</p>\n","comments":"","group":"diff"},"git_diff_blobs":{"type":"function","file":"diff.h","line":1115,"lineto":1125,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1152,"lineto":1163,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1186,"lineto":1198,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_from_buffer":{"type":"function","file":"diff.h","line":1219,"lineto":1222,"args":[{"name":"out","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"content","type":"const char *","comment":"The contents of a patch file"},{"name":"content_len","type":"size_t","comment":"The length of the patch file contents"}],"argline":"git_diff **out, const char *content, size_t content_len","sig":"git_diff **::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the contents of a git patch file into a <code>git_diff</code> object.</p>\n","comments":"<p>The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences.  For example, a patch file likely contains abbreviated object IDs, so the object IDs in a <code>git_diff_delta</code> produced by this function will also be abbreviated.</p>\n\n<p>This function will only read patch files created by a git implementation, it will not read unified diffs produced by the <code>diff</code> program, nor any other types of patch files.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1258,"lineto":1260,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1268,"lineto":1269,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1277,"lineto":1278,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1286,"lineto":1287,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1298,"lineto":1302,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1310,"lineto":1310,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.0/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1362,"lineto":1365,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1381,"lineto":1388,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1399,"lineto":1401,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":111,"lineto":111,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.25.0/general.html#giterr_last-27"],"network/clone.c":["ex/v0.25.0/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.25.0/network/git2.html#giterr_last-1","ex/v0.25.0/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":116,"lineto":116,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":134,"lineto":134,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":145,"lineto":145,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.25.0/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.25.0/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.25.0/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.25.0/general.html#git_libgit2_init-28"],"init.c":["ex/v0.25.0/init.html#git_libgit2_init-2"],"log.c":["ex/v0.25.0/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.25.0/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.25.0/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.25.0/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.25.0/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.25.0/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.25.0/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.25.0/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.25.0/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.25.0/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.25.0/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.25.0/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.25.0/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.25.0/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.25.0/general.html#git_index_free-29"],"init.c":["ex/v0.25.0/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_version":{"type":"function","file":"index.h","line":264,"lineto":264,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"unsigned int","comment":" the index version"},"description":"<p>Get index on-disk version.</p>\n","comments":"<p>Valid return values are 2, 3, or 4.  If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.</p>\n","group":"index"},"git_index_set_version":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"version","type":"unsigned int","comment":"The new version number"}],"argline":"git_index *index, unsigned int version","sig":"git_index *::unsigned int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index on-disk version.</p>\n","comments":"<p>Valid values are 2, 3, or 4.  If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":296,"lineto":296,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":305,"lineto":305,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":313,"lineto":313,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":325,"lineto":325,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":336,"lineto":336,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.25.0/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":374,"lineto":374,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":393,"lineto":393,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.25.0/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":417,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.25.0/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":432,"lineto":433,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":453,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":482,"lineto":482,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":491,"lineto":491,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":522,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":551,"lineto":554,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":570,"lineto":570,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":617,"lineto":622,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":639,"lineto":643,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":668,"lineto":672,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":683,"lineto":683,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":694,"lineto":694,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":719,"lineto":723,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":739,"lineto":744,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":753,"lineto":753,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":761,"lineto":761,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":768,"lineto":768,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":779,"lineto":781,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":793,"lineto":797,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":804,"lineto":805,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":304,"lineto":306,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":375,"lineto":380,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":391,"lineto":395,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.25.0/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":406,"lineto":410,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":421,"lineto":425,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":436,"lineto":440,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":451,"lineto":455,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":473,"lineto":478,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":494,"lineto":500,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":507,"lineto":507,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":525,"lineto":531,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":548,"lineto":553,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":573,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.25.0/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.25.0/blame.html#git_object_id-10","ex/v0.25.0/blame.html#git_object_id-11","ex/v0.25.0/blame.html#git_object_id-12","ex/v0.25.0/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_object_id-12","ex/v0.25.0/cat-file.html#git_object_id-13"],"log.c":["ex/v0.25.0/log.html#git_object_id-34","ex/v0.25.0/log.html#git_object_id-35","ex/v0.25.0/log.html#git_object_id-36","ex/v0.25.0/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_object_id-4","ex/v0.25.0/rev-parse.html#git_object_id-5","ex/v0.25.0/rev-parse.html#git_object_id-6","ex/v0.25.0/rev-parse.html#git_object_id-7","ex/v0.25.0/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.25.0/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_object_type-14","ex/v0.25.0/cat-file.html#git_object_type-15","ex/v0.25.0/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.25.0/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.25.0/blame.html#git_object_free-14","ex/v0.25.0/blame.html#git_object_free-15","ex/v0.25.0/blame.html#git_object_free-16","ex/v0.25.0/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_object_free-17"],"general.c":["ex/v0.25.0/general.html#git_object_free-32"],"log.c":["ex/v0.25.0/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_object_free-9","ex/v0.25.0/rev-parse.html#git_object_free-10","ex/v0.25.0/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.25.0/tag.html#git_object_free-7","ex/v0.25.0/tag.html#git_object_free-8","ex/v0.25.0/tag.html#git_object_free-9","ex/v0.25.0/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_object_type2string-18","ex/v0.25.0/cat-file.html#git_object_type2string-19","ex/v0.25.0/cat-file.html#git_object_type2string-20","ex/v0.25.0/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.25.0/general.html#git_object_type2string-33","ex/v0.25.0/general.html#git_object_type2string-34"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":74,"lineto":74,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":81,"lineto":81,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.25.0/general.html#git_odb_read-35"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":129,"lineto":129,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":149,"lineto":149,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":160,"lineto":160,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":173,"lineto":174,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if an object can be found in the object database by an\n abbreviated object ID.</p>\n","comments":"","group":"odb"},"git_odb_expand_ids":{"type":"function","file":"odb.h","line":215,"lineto":218,"args":[{"name":"db","type":"git_odb *","comment":"The database to be searched for the given objects."},{"name":"ids","type":"git_odb_expand_id *","comment":"An array of short object IDs to search for"},{"name":"count","type":"size_t","comment":"The length of the `ids` array"}],"argline":"git_odb *db, git_odb_expand_id *ids, size_t count","sig":"git_odb *::git_odb_expand_id *::size_t","return":{"type":"int","comment":" 0 on success or an error code on failure"},"description":"<p>Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.  The given array will be\n updated in place:  for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (<code>GIT_OID_HEXSZ</code>) and type will be written back to\n the array.  For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.</p>\n","comments":"<p>Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)</p>\n","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":238,"lineto":238,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":253,"lineto":253,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":273,"lineto":273,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.25.0/general.html#git_odb_write-36"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":296,"lineto":296,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":309,"lineto":309,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":324,"lineto":324,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":331,"lineto":331,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":338,"lineto":338,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":364,"lineto":364,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":384,"lineto":388,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":402,"lineto":402,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":417,"lineto":417,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":431,"lineto":431,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":441,"lineto":441,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.25.0/general.html#git_odb_object_free-37"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":451,"lineto":451,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":464,"lineto":464,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.25.0/general.html#git_odb_object_data-38"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":475,"lineto":475,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.25.0/general.html#git_odb_object_size-39"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":483,"lineto":483,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.25.0/general.html#git_odb_object_type-40"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":498,"lineto":498,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":519,"lineto":519,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":527,"lineto":527,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":537,"lineto":537,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.25.0/general.html#git_oid_fromstr-41","ex/v0.25.0/general.html#git_oid_fromstr-42","ex/v0.25.0/general.html#git_oid_fromstr-43","ex/v0.25.0/general.html#git_oid_fromstr-44","ex/v0.25.0/general.html#git_oid_fromstr-45","ex/v0.25.0/general.html#git_oid_fromstr-46","ex/v0.25.0/general.html#git_oid_fromstr-47","ex/v0.25.0/general.html#git_oid_fromstr-48"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.25.0/general.html#git_oid_fmt-49","ex/v0.25.0/general.html#git_oid_fmt-50","ex/v0.25.0/general.html#git_oid_fmt-51","ex/v0.25.0/general.html#git_oid_fmt-52","ex/v0.25.0/general.html#git_oid_fmt-53","ex/v0.25.0/general.html#git_oid_fmt-54"],"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_oid_fmt-1","ex/v0.25.0/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.25.0/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.25.0/blame.html#git_oid_tostr-18","ex/v0.25.0/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_oid_tostr-26","ex/v0.25.0/cat-file.html#git_oid_tostr-27","ex/v0.25.0/cat-file.html#git_oid_tostr-28","ex/v0.25.0/cat-file.html#git_oid_tostr-29","ex/v0.25.0/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.25.0/log.html#git_oid_tostr-39","ex/v0.25.0/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_oid_tostr-12","ex/v0.25.0/rev-parse.html#git_oid_tostr-13","ex/v0.25.0/rev-parse.html#git_oid_tostr-14","ex/v0.25.0/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.25.0/blame.html#git_oid_cpy-20","ex/v0.25.0/blame.html#git_oid_cpy-21","ex/v0.25.0/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.25.0/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.25.0/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.25.0/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.25.0/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_proxy_init_options":{"type":"function","file":"proxy.h","line":88,"lineto":88,"args":[{"name":"opts","type":"git_proxy_options *","comment":"the options struct to initialize"},{"name":"version","type":"unsigned int","comment":"the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`"}],"argline":"git_proxy_options *opts, unsigned int version","sig":"git_proxy_options *::unsigned int","return":{"type":"int","comment":null},"description":"<p>Initialize a proxy options structure</p>\n","comments":"","group":"proxy"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.0/general.html#git_reference_lookup-55"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.0/general.html#git_reference_target-56"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.0/general.html#git_reference_symbolic_target-57"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.0/general.html#git_reference_type-58"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.0/general.html#git_reference_list-59"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_dup":{"type":"function","file":"refs.h","line":473,"lineto":473,"args":[{"name":"dest","type":"git_reference **","comment":"pointer where to store the copy"},{"name":"source","type":"git_reference *","comment":"object to copy"}],"argline":"git_reference **dest, git_reference *source","sig":"git_reference **::git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing reference.</p>\n","comments":"<p>Call <code>git_reference_free</code> to free the data.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":480,"lineto":480,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.25.0/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":500,"lineto":502,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":513,"lineto":516,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":525,"lineto":525,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":538,"lineto":538,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":545,"lineto":545,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":565,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":579,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":591,"lineto":591,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":601,"lineto":601,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":611,"lineto":611,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":621,"lineto":621,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":631,"lineto":631,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":687,"lineto":691,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":708,"lineto":711,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":727,"lineto":727,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":741,"lineto":741,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.25.0/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":38,"lineto":42,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":55,"lineto":60,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":73,"lineto":76,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":89,"lineto":89,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.25.0/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":101,"lineto":101,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":109,"lineto":109,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":117,"lineto":117,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":128,"lineto":128,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":139,"lineto":139,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":165,"lineto":165,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":178,"lineto":178,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":189,"lineto":189,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":202,"lineto":202,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":213,"lineto":213,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":221,"lineto":221,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":230,"lineto":230,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"proxy_opts","type":"const git_proxy_options *","comment":"proxy settings"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_remote_free-6","ex/v0.25.0/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.25.0/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.25.0/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":473,"lineto":475,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":577,"lineto":579,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_fetch_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":626,"lineto":628,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":646,"lineto":646,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":660,"lineto":660,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":676,"lineto":681,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":697,"lineto":701,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":710,"lineto":710,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":722,"lineto":724,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":729,"lineto":729,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.25.0/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":737,"lineto":737,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":749,"lineto":749,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":756,"lineto":756,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":778,"lineto":782,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":790,"lineto":790,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":802,"lineto":802,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.0/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":820,"lineto":820,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.25.0/general.html#git_repository_open-60"],"network/git2.c":["ex/v0.25.0/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.25.0/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.25.0/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":141,"lineto":145,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository. May be NULL if\n        flags is GIT_REPOSITORY_OPEN_FROM_ENV."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.25.0/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.25.0/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.25.0/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.25.0/log.html#git_repository_open_ext-44","ex/v0.25.0/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.25.0/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.25.0/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":158,"lineto":158,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":171,"lineto":171,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.25.0/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.25.0/describe.html#git_repository_free-7"],"diff.c":["ex/v0.25.0/diff.html#git_repository_free-16"],"general.c":["ex/v0.25.0/general.html#git_repository_free-61"],"init.c":["ex/v0.25.0/init.html#git_repository_free-6"],"log.c":["ex/v0.25.0/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.25.0/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.25.0/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.25.0/status.html#git_repository_free-6"],"tag.c":["ex/v0.25.0/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":188,"lineto":191,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.0/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":300,"lineto":302,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":317,"lineto":320,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.0/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.25.0/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":347,"lineto":347,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":359,"lineto":359,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.0/init.html#git_repository_path-9"],"status.c":["ex/v0.25.0/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":393,"lineto":393,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.0/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":412,"lineto":413,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":421,"lineto":421,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.25.0/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":437,"lineto":437,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":453,"lineto":453,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":469,"lineto":469,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.25.0/general.html#git_repository_odb-62"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":485,"lineto":485,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":501,"lineto":501,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.25.0/general.html#git_repository_index-63"],"init.c":["ex/v0.25.0/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":519,"lineto":519,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":526,"lineto":526,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":535,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":554,"lineto":557,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":574,"lineto":577,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":602,"lineto":607,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":627,"lineto":629,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":647,"lineto":649,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":663,"lineto":665,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":684,"lineto":685,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":715,"lineto":715,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":729,"lineto":729,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":746,"lineto":746,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":758,"lineto":758,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":771,"lineto":771,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.25.0/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.25.0/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.25.0/describe.html#git_revparse_single-8"],"log.c":["ex/v0.25.0/log.html#git_revparse_single-47"],"tag.c":["ex/v0.25.0/tag.html#git_revparse_single-13","ex/v0.25.0/tag.html#git_revparse_single-14","ex/v0.25.0/tag.html#git_revparse_single-15","ex/v0.25.0/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.25.0/blame.html#git_revparse-27"],"log.c":["ex/v0.25.0/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.25.0/rev-parse.html#git_revparse-18","ex/v0.25.0/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":73,"lineto":73,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.0/general.html#git_revwalk_new-64"],"log.c":["ex/v0.25.0/log.html#git_revwalk_new-49","ex/v0.25.0/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":88,"lineto":88,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":107,"lineto":107,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.0/general.html#git_revwalk_push-65"],"log.c":["ex/v0.25.0/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":125,"lineto":125,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":133,"lineto":133,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.25.0/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":148,"lineto":148,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.25.0/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":167,"lineto":167,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":175,"lineto":175,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":186,"lineto":186,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":197,"lineto":197,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":217,"lineto":217,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.0/general.html#git_revwalk_next-66"],"log.c":["ex/v0.25.0/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":228,"lineto":228,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.0/general.html#git_revwalk_sorting-67"],"log.c":["ex/v0.25.0/log.html#git_revwalk_sorting-55","ex/v0.25.0/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":243,"lineto":243,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":250,"lineto":250,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":258,"lineto":258,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.25.0/general.html#git_revwalk_free-68"],"log.c":["ex/v0.25.0/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":267,"lineto":267,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":288,"lineto":291,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.25.0/general.html#git_signature_new-69","ex/v0.25.0/general.html#git_signature_new-70"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.25.0/init.html#git_signature_default-12"],"tag.c":["ex/v0.25.0/tag.html#git_signature_default-17"]}},"git_signature_from_buffer":{"type":"function","file":"signature.h","line":76,"lineto":76,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"buf","type":"const char *","comment":"signature string"}],"argline":"git_signature **out, const char *buf","sig":"git_signature **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new signature by parsing the given buffer, which is\n expected to be in the format &quot;Real Name \n&lt;email</p>\n\n<blockquote>\n<p>timestamp tzoffset&quot;,\n where <code>timestamp</code> is the number of seconds since the Unix epoch and\n <code>tzoffset</code> is the timezone offset in <code>hhmm</code> format (note the lack\n of a colon separator).</p>\n</blockquote>\n","comments":"","group":"signature"},"git_signature_dup":{"type":"function","file":"signature.h","line":88,"lineto":88,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":99,"lineto":99,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.25.0/init.html#git_signature_free-13"],"tag.c":["ex/v0.25.0/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_list_new-12","ex/v0.25.0/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_list_entrycount-14","ex/v0.25.0/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_byindex-16","ex/v0.25.0/status.html#git_status_byindex-17","ex/v0.25.0/status.html#git_status_byindex-18","ex/v0.25.0/status.html#git_status_byindex-19","ex/v0.25.0/status.html#git_status_byindex-20","ex/v0.25.0/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.25.0/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.25.0/general.html#git_strarray_free-71"],"remote.c":["ex/v0.25.0/remote.html#git_strarray_free-16","ex/v0.25.0/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.25.0/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":179,"lineto":180,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":200,"lineto":200,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn&#39;t contain\n the target commit (e.g. because fetchRecurseSubmodules isn&#39;t set), then\n the submodule is fetched using the fetch options supplied in options.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":229,"lineto":232,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":239,"lineto":239,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":259,"lineto":262,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.0/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":289,"lineto":294,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":306,"lineto":306,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":318,"lineto":320,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.25.0/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.0/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":360,"lineto":360,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":378,"lineto":378,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":391,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":421,"lineto":421,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":434,"lineto":434,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":459,"lineto":460,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":472,"lineto":475,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":487,"lineto":488,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":500,"lineto":503,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":516,"lineto":517,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":529,"lineto":532,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":547,"lineto":547,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":562,"lineto":565,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":575,"lineto":575,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":589,"lineto":591,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":603,"lineto":603,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":619,"lineto":623,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.0/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":639,"lineto":641,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":115,"lineto":117,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":54,"lineto":54,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_time_monotonic":{"type":"function","file":"sys/time.h","line":27,"lineto":27,"args":[],"argline":"","sig":"","return":{"type":"double","comment":null},"description":"<p>Return a monotonic time value, useful for measuring running time\n and setting up timeouts.</p>\n","comments":"<p>The returned value is an arbitrary point in time -- it can only be used when comparing it to another <code>git_time_monotonic</code> call.</p>\n\n<p>The time is returned in seconds, with a decimal fraction that differs on accuracy based on the underlying system, but should be least accurate to Nanoseconds.</p>\n\n<p>This function cannot fail.</p>\n","group":"time"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":119,"lineto":121,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":177,"lineto":178,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":191,"lineto":194,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":204,"lineto":207,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":217,"lineto":220,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":231,"lineto":231,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":352,"lineto":355,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":364,"lineto":367,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":376,"lineto":379,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.25.0/general.html#git_tag_lookup-72"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.25.0/general.html#git_tag_target-73"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.25.0/general.html#git_tag_target_type-74"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.25.0/general.html#git_tag_name-75"],"tag.c":["ex/v0.25.0/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tag_message-39","ex/v0.25.0/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.25.0/general.html#git_tag_message-76"],"tag.c":["ex/v0.25.0/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.0/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.0/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.0/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.0/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_tag_dup":{"type":"function","file":"tag.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_tag **","comment":"Pointer to store the copy of the tag"},{"name":"source","type":"git_tag *","comment":"Original tag to copy"}],"argline":"git_tag **out, git_tag *source","sig":"git_tag **::git_tag *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tag. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.25.0/general.html#git_tree_lookup-77","ex/v0.25.0/general.html#git_tree_lookup-78"],"init.c":["ex/v0.25.0/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.25.0/diff.html#git_tree_free-17","ex/v0.25.0/diff.html#git_tree_free-18"],"init.c":["ex/v0.25.0/init.html#git_tree_free-15"],"log.c":["ex/v0.25.0/log.html#git_tree_free-58","ex/v0.25.0/log.html#git_tree_free-59","ex/v0.25.0/log.html#git_tree_free-60","ex/v0.25.0/log.html#git_tree_free-61","ex/v0.25.0/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.25.0/general.html#git_tree_entrycount-79"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.25.0/general.html#git_tree_entry_byname-80"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.25.0/general.html#git_tree_entry_byindex-81"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.25.0/general.html#git_tree_entry_name-82","ex/v0.25.0/general.html#git_tree_entry_name-83"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.0/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.25.0/general.html#git_tree_entry_to_object-84"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"},"git_tree_dup":{"type":"function","file":"tree.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to store the copy of the tree"},{"name":"source","type":"git_tree *","comment":"Original tree to copy"}],"argline":"git_tree **out, git_tree *source","sig":"git_tree **::git_tree *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tree. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tree"},"git_tree_create_updated":{"type":"function","file":"tree.h","line":465,"lineto":465,"args":[{"name":"out","type":"git_oid *","comment":"id of the new tree"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the tree, must be the\n same as for `baseline`"},{"name":"baseline","type":"git_tree *","comment":"the tree to base these changes on"},{"name":"nupdates","type":"size_t","comment":"the number of elements in the update list"},{"name":"updates","type":"const git_tree_update *","comment":"the list of updates to perform"}],"argline":"git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates","sig":"git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *","return":{"type":"int","comment":null},"description":"<p>Create a tree based on another one with the specified modifications</p>\n","comments":"<p>Given the <code>baseline</code> perform the changes described in the list of <code>updates</code> and create a new tree.</p>\n\n<p>This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a <code>git_index</code> and modifying that, but in exchange it is not as flexible.</p>\n\n<p>Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":353,"lineto":357,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":369,"lineto":373,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":452,"lineto":455,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":509,"lineto":512,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":529,"lineto":532,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":582,"lineto":586,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":27,"lineto":27,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"uint32_t","comment":null},{"name":"total","type":"uint32_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, uint32_t current, uint32_t total, void *payload","sig":"int::uint32_t::uint32_t::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":368,"lineto":368,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Callback used to inform of upcoming updates.</p>\n","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":277,"lineto":279,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_merge_driver_init_fn":{"type":"callback","file":"sys/merge.h","line":71,"lineto":71,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.initialize</code>, this is an optional callback invoked before a merge driver is first used.  It will be called once at most per library lifetime.</p>\n\n<p>If non-NULL, the merge driver&#39;s <code>initialize</code> callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the merge driver).</p>\n"},"git_merge_driver_shutdown_fn":{"type":"callback","file":"sys/merge.h","line":83,"lineto":83,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.shutdown</code>, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_merge_driver</code> object itself.</p>\n"},"git_merge_driver_apply_fn":{"type":"callback","file":"sys/merge.h","line":103,"lineto":109,"args":[{"name":"self","type":"int *","comment":null},{"name":"path_out","type":"const char **","comment":null},{"name":"mode_out","type":"int *","comment":null},{"name":"merged_out","type":"int *","comment":null},{"name":"filter_name","type":"const char *","comment":null},{"name":"src","type":"const git_merge_driver_source *","comment":null}],"argline":"int *self, const char **path_out, int *mode_out, int *merged_out, const char *filter_name, const git_merge_driver_source *src","sig":"int *::const char **::int *::int *::const char *::const git_merge_driver_source *","return":{"type":"int","comment":null},"description":"<p>Callback to perform the merge.</p>\n","comments":"<p>Specified as <code>driver.apply</code>, this is the callback that actually does the merge.  If it can successfully perform a merge, it should populate <code>path_out</code> with a pointer to the filename to accept, <code>mode_out</code> with the resultant mode, and <code>merged_out</code> with the buffer of the merged file and then return 0.  If the driver returns <code>GIT_PASSTHROUGH</code>, then the default merge driver should instead be run.  It can also return <code>GIT_EMERGECONFLICT</code> if the driver is not able to produce a merge result, and the file will remain conflicted.  Any other errors will fail and return to the caller.</p>\n\n<p>The <code>filter_name</code> contains the name of the filter that was invoked, as specified by the file&#39;s attributes.</p>\n\n<p>The <code>src</code> contains the data about the file to be merged.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_create_buffer","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_diff_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_dup","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":" default: 10 "},{"type":"unsigned int","name":"describe_strategy","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"const char *","name":"pattern","comments":""},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_result",{"decl":"git_describe_result","type":"struct","value":"git_describe_result","file":"describe.h","line":111,"lineto":111,"tdef":"typedef","description":" A struct that stores the result of a describe operation.","comments":"","used":{"returns":[],"needs":["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["unsigned int contains_data","git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":492,"lineto":503,"block":"unsigned int contains_data\ngit_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"unsigned int","name":"contains_data","comments":" Whether there is data in this binary structure or not.  If this\n is `1`, then this was produced and included binary content.  If\n this is `0` then this was generated knowing only that a binary\n file changed but without providing the data, probably from a patch\n that said `Binary files a/file.txt and b/file.txt differ`."},{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":477,"lineto":489,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":465,"lineto":474,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":331,"lineto":338,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode","uint16_t id_abbrev"],"type":"struct","value":"git_diff_file","file":"diff.h","line":286,"lineto":293,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>id</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n\n<p>The <code>id_abbrev</code> represents the known length of the <code>id</code> field, when converted to a hex string.  It is generally <code>GIT_OID_HEXSZ</code>, unless this delta was created from reading a patch file, in which case it may be abbreviated to something reasonable, like 7 characters.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""},{"type":"uint16_t","name":"id_abbrev","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":697,"lineto":723,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":591,"lineto":660,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1315,"lineto":1322,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1327,"lineto":1349,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1039,"lineto":1045,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print","git_diff_to_buf"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":517,"lineto":524,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":""},{"type":"int","name":"old_lines","comments":" Starting line number in old_file "},{"type":"int","name":"new_start","comments":" Number of lines in old_file "},{"type":"int","name":"new_lines","comments":" Starting line number in new_file "},{"type":"size_t","name":"header_len","comments":" Number of lines in new_file "},{"type":"char [128]","name":"header","comments":" Number of bytes in header text "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":564,"lineto":572,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":543,"lineto":559,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":402,"lineto":422,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":665,"lineto":675,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1229,"lineto":1229,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1234,"lineto":1249,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM","GITERR_PATCH"],"type":"enum","file":"errors.h","line":70,"lineto":103,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM\nGITERR_PATCH","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30},{"type":"int","name":"GITERR_PATCH","comments":"","value":31}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":134,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"<p>If set, libgit2 was built thread-aware and can be safely used from multiple\n threads.</p>\n","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"<p>If set, libgit2 was built with and linked against a TLS implementation.\n Custom TLS streams may still be added by the user to support HTTPS\n regardless of this.</p>\n","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"<p>If set, libgit2 was built with and linked against libssh2. A custom\n transport may still be added by the user to support libssh2 regardless of\n this.</p>\n","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"<p>If set, libgit2 was built with support for sub-second resolution in file\n modification times.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":525,"lineto":562,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS","GIT_OPT_GET_USER_AGENT"],"type":"enum","file":"common.h","line":162,"lineto":180,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15},{"type":"int","name":"GIT_OPT_GET_USER_AGENT","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":311,"lineto":340,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_driver",{"decl":["unsigned int version","git_merge_driver_init_fn initialize","git_merge_driver_shutdown_fn shutdown","git_merge_driver_apply_fn apply"],"type":"struct","value":"git_merge_driver","file":"sys/merge.h","line":118,"lineto":135,"block":"unsigned int version\ngit_merge_driver_init_fn initialize\ngit_merge_driver_shutdown_fn shutdown\ngit_merge_driver_apply_fn apply","tdef":null,"description":" Merge driver structure used to register custom merge drivers.","comments":"<p>To associate extra data with a driver, allocate extra data and put the <code>git_merge_driver</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":" The `version` should be set to `GIT_MERGE_DRIVER_VERSION`. "},{"type":"git_merge_driver_init_fn","name":"initialize","comments":" Called when the merge driver is first used for any file. "},{"type":"git_merge_driver_shutdown_fn","name":"shutdown","comments":" Called when the merge driver is unregistered from the system. "},{"type":"git_merge_driver_apply_fn","name":"apply","comments":" Called to merge the contents of a conflict.  If this function\n returns `GIT_PASSTHROUGH` then the default (`text`) merge driver\n will instead be invoked.  If this function returns\n `GIT_EMERGECONFLICT` then the file will remain conflicted."}],"used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_driver_source",{"decl":"git_merge_driver_source","type":"struct","value":"git_merge_driver_source","file":"sys/merge.h","line":36,"lineto":36,"tdef":"typedef","description":" A merge driver source represents the file to be merged","comments":"","used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","const char * default_driver","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":290,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"const char *","name":"default_driver","comments":" Default merge driver to be used when both sides of a merge have\n changed.  The default is the `text` driver."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver."},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":345,"lineto":363,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nint (*)(git_odb_backend *, const git_oid *) freshen\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"freshen","comments":" \"Freshens\" an already existing object, updating its last-used\n time.  This occurs when `git_odb_write` was called, but the\n object already existed (and will not be re-written).  The\n underlying implementation may want to update last-used timestamps.\n\n If callers implement this, they should return `0` if the object\n exists and was freshened, and non-zero otherwise."},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_expand_id",{"decl":["git_oid id","unsigned short length","git_otype type"],"type":"struct","value":"git_odb_expand_id","file":"odb.h","line":180,"lineto":195,"block":"git_oid id\nunsigned short length\ngit_otype type","tdef":"typedef","description":" The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.","comments":"","fields":[{"type":"git_oid","name":"id","comments":" The object ID to expand "},{"type":"unsigned short","name":"length","comments":" The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)"},{"type":"git_otype","name":"type","comments":" The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID."}],"used":{"returns":[],"needs":["git_odb_expand_ids"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_proxy_options",{"decl":["unsigned int version","git_proxy_t type","const char * url","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","void * payload"],"type":"struct","value":"git_proxy_options","file":"proxy.h","line":42,"lineto":77,"block":"unsigned int version\ngit_proxy_t type\nconst char * url\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\nvoid * payload","tdef":"typedef","description":" Options for connecting through a proxy","comments":"<p>Note that not all types may be supported, depending on the platform and compilation options.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_proxy_t","name":"type","comments":" The type of proxy to use, by URL, auto-detect."},{"type":"const char *","name":"url","comments":" The URL of the proxy."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"void *","name":"payload","comments":" Payload to be provided to the credentials and certificate\n check callbacks."}],"used":{"returns":[],"needs":["git_proxy_init_options","git_remote_connect"]}}],["git_proxy_t",{"decl":["GIT_PROXY_NONE","GIT_PROXY_AUTO","GIT_PROXY_SPECIFIED"],"type":"enum","file":"proxy.h","line":18,"lineto":34,"block":"GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED","tdef":"typedef","description":" The type of proxy to use.","comments":"","fields":[{"type":"int","name":"GIT_PROXY_NONE","comments":"<p>Do not attempt to connect through a proxy</p>\n\n<p>If built against libcurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.</p>\n","value":0},{"type":"int","name":"GIT_PROXY_AUTO","comments":"<p>Try to auto-detect the proxy from the git configuration.</p>\n","value":1},{"type":"int","name":"GIT_PROXY_SPECIFIED","comments":"<p>Connect via the URL given in the options</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":585,"lineto":612,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":636,"lineto":665,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":497,"lineto":515,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":376,"lineto":460,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":221,"lineto":229,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":244,"lineto":248,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":278,"lineto":287,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE","GIT_REPOSITORY_OPEN_NO_DOTGIT","GIT_REPOSITORY_OPEN_FROM_ENV"],"type":"enum","file":"repository.h","line":115,"lineto":121,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE\nGIT_REPOSITORY_OPEN_NO_DOTGIT\nGIT_REPOSITORY_OPEN_FROM_ENV","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks. * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by   appending /.git to the start_path; only open the repository if   start_path itself points to the git directory. * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,   respecting the environment variables used by the git command-line   tools. If set, <code>git_repository_open_ext</code> will ignore the other   flags and the <code>ceiling_dirs</code> argument, and will allow a NULL <code>path</code>   to use <code>GIT_DIR</code> or search from the current directory. The search   for a repository will respect $GIT_CEILING_DIRECTORIES and   $GIT_DISCOVERY_ACROSS_FILESYSTEM.  The opened repository will   respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and   $GIT_ALTERNATE_OBJECT_DIRECTORIES.  In the future, this flag will   also cause <code>git_repository_open_ext</code> to respect $GIT_WORK_TREE and   $GIT_COMMON_DIR; currently, <code>git_repository_open_ext</code> with this   flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is   set.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_DOTGIT","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_OPEN_FROM_ENV","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":693,"lineto":706,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":326,"lineto":339,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":53,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the output with the same default time-order method from git.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order (parents before\n children); this sorting mode can be combined with time sorting to\n produce git&#39;s &quot;time-order&quot;.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const int *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":29,"lineto":41,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const int *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy","int allow_fetch"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":163,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy\nint allow_fetch","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."},{"type":"int","name":"allow_fetch","comments":" Allow fetching from the submodule's default remote if the target\n commit isn't found. Enabled by default."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":31,"lineto":33,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_tree_update",{"decl":["git_tree_update_t action","git_oid id","git_filemode_t filemode","const char * path"],"type":"struct","value":"git_tree_update","file":"tree.h","line":434,"lineto":443,"block":"git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path","tdef":"typedef","description":" An action to perform during the update of a tree","comments":"","fields":[{"type":"git_tree_update_t","name":"action","comments":" Update action. If it's an removal, only the path is looked at "},{"type":"git_oid","name":"id","comments":" The entry's id "},{"type":"git_filemode_t","name":"filemode","comments":" The filemode/kind of object "},{"type":"const char *","name":"path","comments":" The full path from the root tree "}],"used":{"returns":[],"needs":["git_tree_create_updated"]}}],["git_tree_update_t",{"decl":["GIT_TREE_UPDATE_UPSERT","GIT_TREE_UPDATE_REMOVE"],"type":"enum","file":"tree.h","line":424,"lineto":429,"block":"GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE","tdef":"typedef","description":" The kind of update to perform","comments":"","fields":[{"type":"int","name":"GIT_TREE_UPDATE_UPSERT","comments":"<p>Update or insert an entry at the specified path </p>\n","value":0},{"type":"int","name":"GIT_TREE_UPDATE_REMOVE","comments":"<p>Remove an entry from the specified path </p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromstream","git_blob_create_fromstream_commit","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_dup","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["proxy",["git_proxy_init_options"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["time",["git_time_monotonic"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.25.0/add.html"],["blame.c","ex/v0.25.0/blame.html"],["cat-file.c","ex/v0.25.0/cat-file.html"],["common.c","ex/v0.25.0/common.html"],["describe.c","ex/v0.25.0/describe.html"],["diff.c","ex/v0.25.0/diff.html"],["for-each-ref.c","ex/v0.25.0/for-each-ref.html"],["general.c","ex/v0.25.0/general.html"],["init.c","ex/v0.25.0/init.html"],["log.c","ex/v0.25.0/log.html"],["network/clone.c","ex/v0.25.0/network/clone.html"],["network/common.c","ex/v0.25.0/network/common.html"],["network/fetch.c","ex/v0.25.0/network/fetch.html"],["network/git2.c","ex/v0.25.0/network/git2.html"],["network/index-pack.c","ex/v0.25.0/network/index-pack.html"],["network/ls-remote.c","ex/v0.25.0/network/ls-remote.html"],["remote.c","ex/v0.25.0/remote.html"],["rev-list.c","ex/v0.25.0/rev-list.html"],["rev-parse.c","ex/v0.25.0/rev-parse.html"],["showindex.c","ex/v0.25.0/showindex.html"],["status.c","ex/v0.25.0/status.html"],["tag.c","ex/v0.25.0/tag.html"]]}
\ No newline at end of file
diff --git a/v0.25.1.json b/v0.25.1.json
new file mode 100644
index 0000000..4954041
--- /dev/null
+++ b/v0.25.1.json
@@ -0,0 +1 @@
+{"files":[{"file":"annotated_commit.h","functions":["git_annotated_commit_from_ref","git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_free"],"meta":{},"lines":112},{"file":"attr.h","functions":["git_attr_value","git_attr_get","git_attr_get_many","git_attr_foreach","git_attr_cache_flush","git_attr_add_macro"],"meta":{},"lines":240},{"file":"blame.h","functions":["git_blame_init_options","git_blame_get_hunk_count","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_file","git_blame_buffer","git_blame_free"],"meta":{},"lines":207},{"file":"blob.h","functions":["git_blob_lookup","git_blob_lookup_prefix","git_blob_free","git_blob_id","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_blob_filtered_content","git_blob_create_fromworkdir","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_frombuffer","git_blob_is_binary","git_blob_dup"],"meta":{},"lines":228},{"file":"branch.h","functions":["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_iterator_new","git_branch_next","git_branch_iterator_free","git_branch_move","git_branch_lookup","git_branch_name","git_branch_upstream","git_branch_set_upstream","git_branch_is_head"],"meta":{},"lines":246},{"file":"buffer.h","functions":["git_buf_free","git_buf_grow","git_buf_set","git_buf_is_binary","git_buf_contains_nul"],"meta":{},"lines":122},{"file":"checkout.h","functions":["git_checkout_notify_cb","git_checkout_progress_cb","git_checkout_perfdata_cb","git_checkout_init_options","git_checkout_head","git_checkout_index","git_checkout_tree"],"meta":{},"lines":361},{"file":"cherrypick.h","functions":["git_cherrypick_init_options","git_cherrypick_commit","git_cherrypick"],"meta":{},"lines":84},{"file":"clone.h","functions":["git_remote_create_cb","git_repository_create_cb","git_clone_init_options","git_clone"],"meta":{},"lines":203},{"file":"commit.h","functions":["git_commit_lookup","git_commit_lookup_prefix","git_commit_free","git_commit_id","git_commit_owner","git_commit_message_encoding","git_commit_message","git_commit_message_raw","git_commit_summary","git_commit_body","git_commit_time","git_commit_time_offset","git_commit_committer","git_commit_author","git_commit_raw_header","git_commit_tree","git_commit_tree_id","git_commit_parentcount","git_commit_parent","git_commit_parent_id","git_commit_nth_gen_ancestor","git_commit_header_field","git_commit_extract_signature","git_commit_create","git_commit_create_v","git_commit_amend","git_commit_create_buffer","git_commit_create_with_signature","git_commit_dup"],"meta":{},"lines":471},{"file":"common.h","functions":["git_libgit2_version","git_libgit2_features","git_libgit2_opts"],"meta":{},"lines":302},{"file":"config.h","functions":["git_config_entry_free","git_config_find_global","git_config_find_xdg","git_config_find_system","git_config_find_programdata","git_config_open_default","git_config_new","git_config_add_file_ondisk","git_config_open_ondisk","git_config_open_level","git_config_open_global","git_config_snapshot","git_config_free","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_bool","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_get_multivar_foreach","git_config_multivar_iterator_new","git_config_next","git_config_iterator_free","git_config_set_int32","git_config_set_int64","git_config_set_bool","git_config_set_string","git_config_set_multivar","git_config_delete_entry","git_config_delete_multivar","git_config_foreach","git_config_iterator_new","git_config_iterator_glob_new","git_config_foreach_match","git_config_get_mapped","git_config_lookup_map_value","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_backend_foreach_match","git_config_lock"],"meta":{},"lines":724},{"file":"cred_helpers.h","functions":["git_cred_userpass"],"meta":{},"lines":48},{"file":"describe.h","functions":["git_describe_commit","git_describe_workdir","git_describe_format","git_describe_result_free"],"meta":{},"lines":161},{"file":"diff.h","functions":["git_diff_notify_cb","git_diff_progress_cb","git_diff_init_options","git_diff_file_cb","git_diff_binary_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_find_init_options","git_diff_free","git_diff_tree_to_tree","git_diff_tree_to_index","git_diff_index_to_workdir","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_diff_index_to_index","git_diff_merge","git_diff_find_similar","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_get_delta","git_diff_is_sorted_icase","git_diff_foreach","git_diff_status_char","git_diff_print","git_diff_to_buf","git_diff_blobs","git_diff_blob_to_buffer","git_diff_buffers","git_diff_from_buffer","git_diff_get_stats","git_diff_stats_files_changed","git_diff_stats_insertions","git_diff_stats_deletions","git_diff_stats_to_buf","git_diff_stats_free","git_diff_format_email","git_diff_commit_as_email","git_diff_format_email_init_options"],"meta":{},"lines":1401},{"file":"errors.h","functions":["giterr_last","giterr_clear","giterr_set_str","giterr_set_oom"],"meta":{},"lines":145},{"file":"filter.h","functions":["git_filter_list_load","git_filter_list_contains","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_apply_to_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_list_stream_blob","git_filter_list_free"],"meta":{},"lines":210},{"file":"global.h","functions":["git_libgit2_init","git_libgit2_shutdown"],"meta":{},"lines":39},{"file":"graph.h","functions":["git_graph_ahead_behind","git_graph_descendant_of"],"meta":{},"lines":51},{"file":"ignore.h","functions":["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"],"meta":{},"lines":74},{"file":"index.h","functions":["git_index_matched_path_cb","git_index_open","git_index_new","git_index_free","git_index_owner","git_index_caps","git_index_set_caps","git_index_version","git_index_set_version","git_index_read","git_index_write","git_index_path","git_index_checksum","git_index_read_tree","git_index_write_tree","git_index_write_tree_to","git_index_entrycount","git_index_clear","git_index_get_byindex","git_index_get_bypath","git_index_remove","git_index_remove_directory","git_index_add","git_index_entry_stage","git_index_entry_is_conflict","git_index_add_bypath","git_index_add_frombuffer","git_index_remove_bypath","git_index_add_all","git_index_remove_all","git_index_update_all","git_index_find","git_index_find_prefix","git_index_conflict_add","git_index_conflict_get","git_index_conflict_remove","git_index_conflict_cleanup","git_index_has_conflicts","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_iterator_free"],"meta":{},"lines":805},{"file":"indexer.h","functions":["git_indexer_new","git_indexer_append","git_indexer_commit","git_indexer_hash","git_indexer_free"],"meta":{},"lines":72},{"file":"merge.h","functions":["git_merge_file_init_input","git_merge_file_init_options","git_merge_init_options","git_merge_analysis","git_merge_base","git_merge_bases","git_merge_base_many","git_merge_bases_many","git_merge_base_octopus","git_merge_file","git_merge_file_from_index","git_merge_file_result_free","git_merge_trees","git_merge_commits","git_merge"],"meta":{},"lines":578},{"file":"message.h","functions":["git_message_prettify"],"meta":{},"lines":39},{"file":"net.h","functions":["git_headlist_cb"],"meta":{},"lines":55},{"file":"notes.h","functions":["git_note_foreach_cb","git_note_iterator_new","git_note_iterator_free","git_note_next","git_note_read","git_note_author","git_note_committer","git_note_message","git_note_id","git_note_create","git_note_remove","git_note_free","git_note_foreach"],"meta":{},"lines":213},{"file":"object.h","functions":["git_object_lookup","git_object_lookup_prefix","git_object_lookup_bypath","git_object_id","git_object_short_id","git_object_type","git_object_owner","git_object_free","git_object_type2string","git_object_string2type","git_object_typeisloose","git_object__size","git_object_peel","git_object_dup"],"meta":{},"lines":237},{"file":"odb.h","functions":["git_odb_foreach_cb","git_odb_new","git_odb_open","git_odb_add_disk_alternate","git_odb_free","git_odb_read","git_odb_read_prefix","git_odb_read_header","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_refresh","git_odb_foreach","git_odb_write","git_odb_open_wstream","git_odb_stream_write","git_odb_stream_finalize_write","git_odb_stream_read","git_odb_stream_free","git_odb_open_rstream","git_odb_write_pack","git_odb_hash","git_odb_hashfile","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_data","git_odb_object_size","git_odb_object_type","git_odb_add_backend","git_odb_add_alternate","git_odb_num_backends","git_odb_get_backend"],"meta":{},"lines":537},{"file":"odb_backend.h","functions":["git_odb_backend_pack","git_odb_backend_loose","git_odb_backend_one_pack"],"meta":{},"lines":130},{"file":"oid.h","functions":["git_oid_fromstr","git_oid_fromstrp","git_oid_fromstrn","git_oid_fromraw","git_oid_fmt","git_oid_nfmt","git_oid_pathfmt","git_oid_tostr_s","git_oid_tostr","git_oid_cpy","git_oid_cmp","git_oid_equal","git_oid_ncmp","git_oid_streq","git_oid_strcmp","git_oid_iszero","git_oid_shorten_new","git_oid_shorten_add","git_oid_shorten_free"],"meta":{},"lines":265},{"file":"oidarray.h","functions":["git_oidarray_free"],"meta":{},"lines":34},{"file":"pack.h","functions":["git_packbuilder_new","git_packbuilder_set_threads","git_packbuilder_insert","git_packbuilder_insert_tree","git_packbuilder_insert_commit","git_packbuilder_insert_walk","git_packbuilder_insert_recur","git_packbuilder_write","git_packbuilder_hash","git_packbuilder_foreach","git_packbuilder_object_count","git_packbuilder_written","git_packbuilder_progress","git_packbuilder_set_callbacks","git_packbuilder_free"],"meta":{},"lines":236},{"file":"patch.h","functions":["git_patch_from_diff","git_patch_from_blobs","git_patch_from_blob_and_buffer","git_patch_from_buffers","git_patch_free","git_patch_get_delta","git_patch_num_hunks","git_patch_line_stats","git_patch_get_hunk","git_patch_num_lines_in_hunk","git_patch_get_line_in_hunk","git_patch_size","git_patch_print","git_patch_to_buf"],"meta":{},"lines":268},{"file":"pathspec.h","functions":["git_pathspec_new","git_pathspec_free","git_pathspec_matches_path","git_pathspec_match_workdir","git_pathspec_match_index","git_pathspec_match_tree","git_pathspec_match_diff","git_pathspec_match_list_free","git_pathspec_match_list_entrycount","git_pathspec_match_list_entry","git_pathspec_match_list_diff_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_failed_entry"],"meta":{},"lines":260},{"file":"proxy.h","functions":["git_proxy_init_options"],"meta":{},"lines":88},{"file":"rebase.h","functions":["git_rebase_init_options","git_rebase_init","git_rebase_open","git_rebase_operation_entrycount","git_rebase_operation_current","git_rebase_operation_byindex","git_rebase_next","git_rebase_inmemory_index","git_rebase_commit","git_rebase_abort","git_rebase_finish","git_rebase_free"],"meta":{},"lines":316},{"file":"refdb.h","functions":["git_refdb_new","git_refdb_open","git_refdb_compress","git_refdb_free"],"meta":{},"lines":63},{"file":"reflog.h","functions":["git_reflog_read","git_reflog_write","git_reflog_append","git_reflog_rename","git_reflog_delete","git_reflog_entrycount","git_reflog_entry_byindex","git_reflog_drop","git_reflog_entry_id_old","git_reflog_entry_id_new","git_reflog_entry_committer","git_reflog_entry_message","git_reflog_free"],"meta":{},"lines":166},{"file":"refs.h","functions":["git_reference_lookup","git_reference_name_to_id","git_reference_dwim","git_reference_symbolic_create_matching","git_reference_symbolic_create","git_reference_create","git_reference_create_matching","git_reference_target","git_reference_target_peel","git_reference_symbolic_target","git_reference_type","git_reference_name","git_reference_resolve","git_reference_owner","git_reference_symbolic_set_target","git_reference_set_target","git_reference_rename","git_reference_delete","git_reference_remove","git_reference_list","git_reference_foreach","git_reference_foreach_name","git_reference_dup","git_reference_free","git_reference_cmp","git_reference_iterator_new","git_reference_iterator_glob_new","git_reference_next","git_reference_next_name","git_reference_iterator_free","git_reference_foreach_glob","git_reference_has_log","git_reference_ensure_log","git_reference_is_branch","git_reference_is_remote","git_reference_is_tag","git_reference_is_note","git_reference_normalize_name","git_reference_peel","git_reference_is_valid_name","git_reference_shorthand"],"meta":{},"lines":741},{"file":"refspec.h","functions":["git_refspec_src","git_refspec_dst","git_refspec_string","git_refspec_force","git_refspec_direction","git_refspec_src_matches","git_refspec_dst_matches","git_refspec_transform","git_refspec_rtransform"],"meta":{},"lines":100},{"file":"remote.h","functions":["git_remote_create","git_remote_create_with_fetchspec","git_remote_create_anonymous","git_remote_lookup","git_remote_dup","git_remote_owner","git_remote_name","git_remote_url","git_remote_pushurl","git_remote_set_url","git_remote_set_pushurl","git_remote_add_fetch","git_remote_get_fetch_refspecs","git_remote_add_push","git_remote_get_push_refspecs","git_remote_refspec_count","git_remote_get_refspec","git_remote_connect","git_remote_ls","git_remote_connected","git_remote_stop","git_remote_disconnect","git_remote_free","git_remote_list","git_push_transfer_progress","git_push_negotiation","git_remote_init_callbacks","git_fetch_init_options","git_push_init_options","git_remote_download","git_remote_upload","git_remote_update_tips","git_remote_fetch","git_remote_prune","git_remote_push","git_remote_stats","git_remote_autotag","git_remote_set_autotag","git_remote_prune_refs","git_remote_rename","git_remote_is_valid_name","git_remote_delete","git_remote_default_branch"],"meta":{},"lines":820},{"file":"repository.h","functions":["git_repository_open","git_repository_wrap_odb","git_repository_discover","git_repository_open_ext","git_repository_open_bare","git_repository_free","git_repository_init","git_repository_init_init_options","git_repository_init_ext","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_is_empty","git_repository_path","git_repository_workdir","git_repository_set_workdir","git_repository_is_bare","git_repository_config","git_repository_config_snapshot","git_repository_odb","git_repository_refdb","git_repository_index","git_repository_message","git_repository_message_remove","git_repository_state_cleanup","git_repository_fetchhead_foreach","git_repository_mergehead_foreach","git_repository_hashfile","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_detach_head","git_repository_state","git_repository_set_namespace","git_repository_get_namespace","git_repository_is_shallow","git_repository_ident","git_repository_set_ident"],"meta":{},"lines":771},{"file":"reset.h","functions":["git_reset","git_reset_from_annotated","git_reset_default"],"meta":{},"lines":107},{"file":"revert.h","functions":["git_revert_init_options","git_revert_commit","git_revert"],"meta":{},"lines":84},{"file":"revparse.h","functions":["git_revparse_single","git_revparse_ext","git_revparse"],"meta":{},"lines":108},{"file":"revwalk.h","functions":["git_revwalk_new","git_revwalk_reset","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_push_ref","git_revwalk_hide_ref","git_revwalk_next","git_revwalk_sorting","git_revwalk_push_range","git_revwalk_simplify_first_parent","git_revwalk_free","git_revwalk_repository","git_revwalk_hide_cb","git_revwalk_add_hide_cb"],"meta":{},"lines":291},{"file":"signature.h","functions":["git_signature_new","git_signature_now","git_signature_default","git_signature_from_buffer","git_signature_dup","git_signature_free"],"meta":{},"lines":99},{"file":"stash.h","functions":["git_stash_apply_progress_cb","git_stash_apply_init_options","git_stash_apply","git_stash_cb","git_stash_foreach","git_stash_drop","git_stash_pop"],"meta":{},"lines":253},{"file":"status.h","functions":["git_status_cb","git_status_init_options","git_status_foreach","git_status_foreach_ext","git_status_file","git_status_list_new","git_status_list_entrycount","git_status_byindex","git_status_list_free","git_status_should_ignore"],"meta":{},"lines":366},{"file":"strarray.h","functions":["git_strarray_free","git_strarray_copy"],"meta":{},"lines":53},{"file":"submodule.h","functions":["git_submodule_cb","git_submodule_update_init_options","git_submodule_update","git_submodule_lookup","git_submodule_free","git_submodule_foreach","git_submodule_add_setup","git_submodule_add_finalize","git_submodule_add_to_index","git_submodule_owner","git_submodule_name","git_submodule_path","git_submodule_url","git_submodule_resolve_url","git_submodule_branch","git_submodule_set_branch","git_submodule_set_url","git_submodule_index_id","git_submodule_head_id","git_submodule_wd_id","git_submodule_ignore","git_submodule_set_ignore","git_submodule_update_strategy","git_submodule_set_update","git_submodule_fetch_recurse_submodules","git_submodule_set_fetch_recurse_submodules","git_submodule_init","git_submodule_repo_init","git_submodule_sync","git_submodule_open","git_submodule_reload","git_submodule_status","git_submodule_location"],"meta":{},"lines":641},{"file":"sys/commit.h","functions":["git_commit_create_from_ids","git_commit_create_from_callback"],"meta":{},"lines":76},{"file":"sys/config.h","functions":["git_config_init_backend","git_config_add_backend"],"meta":{},"lines":123},{"file":"sys/diff.h","functions":["git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_get_perfdata","git_status_list_get_perfdata"],"meta":{},"lines":90},{"file":"sys/filter.h","functions":["git_filter_lookup","git_filter_list_new","git_filter_list_push","git_filter_list_length","git_filter_source_repo","git_filter_source_path","git_filter_source_filemode","git_filter_source_id","git_filter_source_mode","git_filter_source_flags","git_filter_init_fn","git_filter_shutdown_fn","git_filter_check_fn","git_filter_apply_fn","git_filter_cleanup_fn","git_filter_register","git_filter_unregister"],"meta":{},"lines":317},{"file":"sys/hashsig.h","functions":["git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free","git_hashsig_compare"],"meta":{},"lines":102},{"file":"sys/mempack.h","functions":["git_mempack_new","git_mempack_reset"],"meta":{},"lines":81},{"file":"sys/merge.h","functions":["git_merge_driver_init_fn","git_merge_driver_shutdown_fn","git_merge_driver_apply_fn"],"meta":{},"lines":135},{"file":"sys/odb_backend.h","functions":["git_odb_init_backend"],"meta":{},"lines":117},{"file":"sys/openssl.h","functions":["git_openssl_set_locking"],"meta":{},"lines":34},{"file":"sys/refdb_backend.h","functions":["git_refdb_init_backend","git_refdb_backend_fs","git_refdb_set_backend"],"meta":{},"lines":214},{"file":"sys/refs.h","functions":["git_reference__alloc","git_reference__alloc_symbolic"],"meta":{},"lines":45},{"file":"sys/repository.h","functions":["git_repository_new","git_repository__cleanup","git_repository_reinit_filesystem","git_repository_set_config","git_repository_set_odb","git_repository_set_refdb","git_repository_set_index","git_repository_set_bare"],"meta":{},"lines":136},{"file":"sys/stream.h","functions":["git_stream_register_tls"],"meta":{},"lines":54},{"file":"sys/time.h","functions":["git_time_monotonic"],"meta":{},"lines":27},{"file":"sys/transport.h","functions":["git_transport_init","git_transport_new","git_transport_ssh_with_paths","git_transport_unregister","git_transport_dummy","git_transport_local","git_transport_smart","git_transport_smart_certificate_check","git_smart_subtransport_http","git_smart_subtransport_git","git_smart_subtransport_ssh"],"meta":{},"lines":379},{"file":"tag.h","functions":["git_tag_lookup","git_tag_lookup_prefix","git_tag_free","git_tag_id","git_tag_owner","git_tag_target","git_tag_target_id","git_tag_target_type","git_tag_name","git_tag_tagger","git_tag_message","git_tag_create","git_tag_annotation_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_list","git_tag_list_match","git_tag_foreach","git_tag_peel","git_tag_dup"],"meta":{},"lines":357},{"file":"trace.h","functions":["git_trace_callback","git_trace_set"],"meta":{},"lines":63},{"file":"transport.h","functions":["git_transport_cb","git_cred_has_username","git_cred_userpass_plaintext_new","git_cred_ssh_key_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_custom_new","git_cred_default_new","git_cred_username_new","git_cred_ssh_key_memory_new","git_cred_free","git_cred_acquire_cb"],"meta":{},"lines":338},{"file":"tree.h","functions":["git_tree_lookup","git_tree_lookup_prefix","git_tree_free","git_tree_id","git_tree_owner","git_tree_entrycount","git_tree_entry_byname","git_tree_entry_byindex","git_tree_entry_byid","git_tree_entry_bypath","git_tree_entry_dup","git_tree_entry_free","git_tree_entry_name","git_tree_entry_id","git_tree_entry_type","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_cmp","git_tree_entry_to_object","git_treebuilder_new","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_remove","git_treebuilder_filter_cb","git_treebuilder_filter","git_treebuilder_write","git_treewalk_cb","git_tree_walk","git_tree_dup","git_tree_create_updated"],"meta":{},"lines":465},{"file":"types.h","functions":["git_transfer_progress_cb","git_transport_message_cb","git_transport_certificate_check_cb"],"meta":{},"lines":425}],"functions":{"git_annotated_commit_from_ref":{"type":"function","file":"annotated_commit.h","line":33,"lineto":36,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given reference"},{"name":"ref","type":"const git_reference *","comment":"reference to use to lookup the git_annotated_commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_reference *ref","sig":"git_annotated_commit **::git_repository *::const git_reference *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given reference.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_from_fetchhead":{"type":"function","file":"annotated_commit.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"branch_name","type":"const char *","comment":"name of the (remote) branch"},{"name":"remote_url","type":"const char *","comment":"url of the remote"},{"name":"id","type":"const git_oid *","comment":"the commit object id of the remote branch"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *branch_name, const char *remote_url, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const char *::const char *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given fetch head data.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_lookup":{"type":"function","file":"annotated_commit.h","line":75,"lineto":78,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"id","type":"const git_oid *","comment":"the commit object id to lookup"}],"argline":"git_annotated_commit **out, git_repository *repo, const git_oid *id","sig":"git_annotated_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_commit</code> from the given commit id.\n The resulting git_annotated_commit must be freed with\n <code>git_annotated_commit_free</code>.</p>\n","comments":"<p>An annotated commit contains information about how it was looked up, which may be useful for functions like merge or rebase to provide context to the operation.  For example, conflict files will include the name of the source or target branches being merged.  It is therefore preferable to use the most specific function (eg <code>git_annotated_commit_from_ref</code>) instead of this one when that data is known.</p>\n","group":"annotated"},"git_annotated_commit_from_revspec":{"type":"function","file":"annotated_commit.h","line":92,"lineto":95,"args":[{"name":"out","type":"git_annotated_commit **","comment":"pointer to store the git_annotated_commit result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given commit"},{"name":"revspec","type":"const char *","comment":"the extended sha syntax string to use to lookup the commit"}],"argline":"git_annotated_commit **out, git_repository *repo, const char *revspec","sig":"git_annotated_commit **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Creates a <code>git_annotated_comit</code> from a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"annotated"},"git_annotated_commit_id":{"type":"function","file":"annotated_commit.h","line":103,"lineto":104,"args":[{"name":"commit","type":"const git_annotated_commit *","comment":"the given annotated commit"}],"argline":"const git_annotated_commit *commit","sig":"const git_annotated_commit *","return":{"type":"const git_oid *","comment":" commit id"},"description":"<p>Gets the commit ID that the given <code>git_annotated_commit</code> refers to.</p>\n","comments":"","group":"annotated"},"git_annotated_commit_free":{"type":"function","file":"annotated_commit.h","line":111,"lineto":112,"args":[{"name":"commit","type":"git_annotated_commit *","comment":"annotated commit to free"}],"argline":"git_annotated_commit *commit","sig":"git_annotated_commit *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_annotated_commit</code>.</p>\n","comments":"","group":"annotated"},"git_attr_value":{"type":"function","file":"attr.h","line":102,"lineto":102,"args":[{"name":"attr","type":"const char *","comment":"The attribute"}],"argline":"const char *attr","sig":"const char *","return":{"type":"git_attr_t","comment":" the value type for the attribute"},"description":"<p>Return the value type for a given attribute.</p>\n","comments":"<p>This can be either <code>TRUE</code>, <code>FALSE</code>, <code>UNSPECIFIED</code> (if the attribute was not set at all), or <code>VALUE</code>, if the attribute was set to an actual string.</p>\n\n<p>If the attribute has a <code>VALUE</code> string, it can be accessed normally as a NULL-terminated C string.</p>\n","group":"attr"},"git_attr_get":{"type":"function","file":"attr.h","line":145,"lineto":150,"args":[{"name":"value_out","type":"const char **","comment":"Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory)."},{"name":"name","type":"const char *","comment":"The name of the attribute to look up."}],"argline":"const char **value_out, git_repository *repo, uint32_t flags, const char *path, const char *name","sig":"const char **::git_repository *::uint32_t::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Look up the value of one git attribute for path.</p>\n","comments":"","group":"attr"},"git_attr_get_many":{"type":"function","file":"attr.h","line":181,"lineto":187,"args":[{"name":"values_out","type":"const char **","comment":"An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it)."},{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory)."},{"name":"num_attr","type":"size_t","comment":"The number of attributes being looked up"},{"name":"names","type":"const char **","comment":"An array of num_attr strings containing attribute names."}],"argline":"const char **values_out, git_repository *repo, uint32_t flags, const char *path, size_t num_attr, const char **names","sig":"const char **::git_repository *::uint32_t::const char *::size_t::const char **","return":{"type":"int","comment":null},"description":"<p>Look up a list of git attributes for path.</p>\n","comments":"<p>Use this if you have a known list of attributes that you want to look up in a single call.  This is somewhat more efficient than calling <code>git_attr_get()</code> multiple times.</p>\n\n<p>For example, you might write:</p>\n\n<pre><code> const char *attrs[] = { &quot;crlf&quot;, &quot;diff&quot;, &quot;foo&quot; };     const char **values[3];     git_attr_get_many(values, repo, 0, &quot;my/fun/file.c&quot;, 3, attrs);\n</code></pre>\n\n<p>Then you could loop through the 3 values to get the settings for the three attributes you asked about.</p>\n","group":"attr"},"git_attr_foreach":{"type":"function","file":"attr.h","line":209,"lineto":214,"args":[{"name":"repo","type":"git_repository *","comment":"The repository containing the path."},{"name":"flags","type":"uint32_t","comment":"A combination of GIT_ATTR_CHECK... flags."},{"name":"path","type":"const char *","comment":"Path inside the repo to check attributes.  This does not have\n             to exist, but if it does not, then it will be treated as a\n             plain file (i.e. not a directory)."},{"name":"callback","type":"git_attr_foreach_cb","comment":"Function to invoke on each attribute name and value.  The\n             value may be NULL is the attribute is explicitly set to\n             UNSPECIFIED using the '!' sign.  Callback will be invoked\n             only once per attribute name, even if there are multiple\n             rules for a given file.  The highest priority rule will be\n             used.  Return a non-zero value from this to stop looping.\n             The value will be returned from `git_attr_foreach`."},{"name":"payload","type":"void *","comment":"Passed on as extra parameter to callback function."}],"argline":"git_repository *repo, uint32_t flags, const char *path, git_attr_foreach_cb callback, void *payload","sig":"git_repository *::uint32_t::const char *::git_attr_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the git attributes for a path.</p>\n","comments":"","group":"attr"},"git_attr_cache_flush":{"type":"function","file":"attr.h","line":224,"lineto":225,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Flush the gitattributes cache.</p>\n","comments":"<p>Call this if you have reason to believe that the attributes files on disk no longer match the cached contents of memory.  This will cause the attributes files to be reloaded the next time that an attribute access function is called.</p>\n","group":"attr"},"git_attr_add_macro":{"type":"function","file":"attr.h","line":237,"lineto":240,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":null},{"name":"values","type":"const char *","comment":null}],"argline":"git_repository *repo, const char *name, const char *values","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Add a macro definition.</p>\n","comments":"<p>Macros will automatically be loaded from the top level <code>.gitattributes</code> file of the repository (plus the build-in &quot;binary&quot; macro).  This function allows you to add others.  For example, to add the default macro, you would call:</p>\n\n<pre><code> git_attr_add_macro(repo, &quot;binary&quot;, &quot;-diff -crlf&quot;);\n</code></pre>\n","group":"attr"},"git_blame_init_options":{"type":"function","file":"blame.h","line":92,"lineto":94,"args":[{"name":"opts","type":"git_blame_options *","comment":"The `git_blame_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`"}],"argline":"git_blame_options *opts, unsigned int version","sig":"git_blame_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_blame_options</code> with default values. Equivalent to\n creating an instance with GIT_BLAME_OPTIONS_INIT.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_count":{"type":"function","file":"blame.h","line":137,"lineto":137,"args":[{"name":"blame","type":"git_blame *","comment":null}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"uint32_t","comment":null},"description":"<p>Gets the number of hunks that exist in the blame structure.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byindex":{"type":"function","file":"blame.h","line":146,"lineto":148,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"index","type":"uint32_t","comment":"index of the hunk to retrieve"}],"argline":"git_blame *blame, uint32_t index","sig":"git_blame *::uint32_t","return":{"type":"const git_blame_hunk *","comment":" the hunk at the given index, or NULL on error"},"description":"<p>Gets the blame hunk at the given index.</p>\n","comments":"","group":"blame"},"git_blame_get_hunk_byline":{"type":"function","file":"blame.h","line":157,"lineto":159,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to query"},{"name":"lineno","type":"size_t","comment":"the (1-based) line number to find a hunk for"}],"argline":"git_blame *blame, size_t lineno","sig":"git_blame *::size_t","return":{"type":"const git_blame_hunk *","comment":" the hunk that contains the given line, or NULL on error"},"description":"<p>Gets the hunk that relates to the given line number in the newest commit.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blame_get_hunk_byline-1"]}},"git_blame_file":{"type":"function","file":"blame.h","line":172,"lineto":176,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the blame object"},{"name":"repo","type":"git_repository *","comment":"repository whose history is to be walked"},{"name":"path","type":"const char *","comment":"path to file to consider"},{"name":"options","type":"git_blame_options *","comment":"options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed."}],"argline":"git_blame **out, git_repository *repo, const char *path, git_blame_options *options","sig":"git_blame **::git_repository *::const char *::git_blame_options *","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error.)"},"description":"<p>Get the blame for a single file.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blame_file-2"]}},"git_blame_buffer":{"type":"function","file":"blame.h","line":196,"lineto":200,"args":[{"name":"out","type":"git_blame **","comment":"pointer that will receive the resulting blame data"},{"name":"reference","type":"git_blame *","comment":"cached blame from the history of the file (usually the output\n                  from git_blame_file)"},{"name":"buffer","type":"const char *","comment":"the (possibly) modified contents of the file"},{"name":"buffer_len","type":"size_t","comment":"number of valid bytes in the buffer"}],"argline":"git_blame **out, git_blame *reference, const char *buffer, size_t buffer_len","sig":"git_blame **::git_blame *::const char *::size_t","return":{"type":"int","comment":" 0 on success, or an error code. (use giterr_last for information\n         about the error)"},"description":"<p>Get blame data for a file that has been modified in memory. The <code>reference</code>\n parameter is a pre-calculated blame for the in-odb history of the file. This\n means that once a file blame is completed (which can be expensive), updating\n the buffer blame is very fast.</p>\n","comments":"<p>Lines that differ between the buffer and the committed version are marked as having a zero OID for their final_commit_id.</p>\n","group":"blame"},"git_blame_free":{"type":"function","file":"blame.h","line":207,"lineto":207,"args":[{"name":"blame","type":"git_blame *","comment":"the blame structure to free"}],"argline":"git_blame *blame","sig":"git_blame *","return":{"type":"void","comment":null},"description":"<p>Free memory allocated by git_blame_file or git_blame_buffer.</p>\n","comments":"","group":"blame","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blame_free-3"]}},"git_blob_lookup":{"type":"function","file":"blob.h","line":33,"lineto":33,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id","sig":"git_blob **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository.</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blob_lookup-4"],"general.c":["ex/v0.25.1/general.html#git_blob_lookup-1"]}},"git_blob_lookup_prefix":{"type":"function","file":"blob.h","line":47,"lineto":47,"args":[{"name":"blob","type":"git_blob **","comment":"pointer to the looked up blob"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the blob."},{"name":"id","type":"const git_oid *","comment":"identity of the blob to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_blob **blob, git_repository *repo, const git_oid *id, size_t len","sig":"git_blob **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a blob object from a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"blob"},"git_blob_free":{"type":"function","file":"blob.h","line":60,"lineto":60,"args":[{"name":"blob","type":"git_blob *","comment":"the blob to close"}],"argline":"git_blob *blob","sig":"git_blob *","return":{"type":"void","comment":null},"description":"<p>Close an open blob</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a blob. Failure to do so will cause a memory leak.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blob_free-5"]}},"git_blob_id":{"type":"function","file":"blob.h","line":68,"lineto":68,"args":[{"name":"blob","type":"const git_blob *","comment":"a previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const git_oid *","comment":" SHA1 hash for this blob."},"description":"<p>Get the id of a blob.</p>\n","comments":"","group":"blob"},"git_blob_owner":{"type":"function","file":"blob.h","line":76,"lineto":76,"args":[{"name":"blob","type":"const git_blob *","comment":"A previously loaded blob."}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_repository *","comment":" Repository that contains this blob."},"description":"<p>Get the repository that contains the blob.</p>\n","comments":"","group":"blob"},"git_blob_rawcontent":{"type":"function","file":"blob.h","line":89,"lineto":89,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"const void *","comment":" the pointer"},"description":"<p>Get a read-only buffer with the raw content of a blob.</p>\n","comments":"<p>A pointer to the raw content of a blob is returned; this pointer is owned internally by the object and shall not be free&#39;d. The pointer may be invalidated at a later time.</p>\n","group":"blob","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blob_rawcontent-6"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_blob_rawcontent-1"],"general.c":["ex/v0.25.1/general.html#git_blob_rawcontent-2"]}},"git_blob_rawsize":{"type":"function","file":"blob.h","line":97,"lineto":97,"args":[{"name":"blob","type":"const git_blob *","comment":"pointer to the blob"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"git_off_t","comment":" size on bytes"},"description":"<p>Get the size in bytes of the contents of a blob</p>\n","comments":"","group":"blob","examples":{"blame.c":["ex/v0.25.1/blame.html#git_blob_rawsize-7"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_blob_rawsize-2"],"general.c":["ex/v0.25.1/general.html#git_blob_rawsize-3","ex/v0.25.1/general.html#git_blob_rawsize-4"]}},"git_blob_filtered_content":{"type":"function","file":"blob.h","line":122,"lineto":126,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"blob","type":"git_blob *","comment":"Pointer to the blob"},{"name":"as_path","type":"const char *","comment":"Path used for file attribute lookups, etc."},{"name":"check_for_binary_data","type":"int","comment":"Should this test if blob content contains\n        NUL bytes / looks like binary data before applying filters?"}],"argline":"git_buf *out, git_blob *blob, const char *as_path, int check_for_binary_data","sig":"git_buf *::git_blob *::const char *::int","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Get a buffer with the filtered content of a blob.</p>\n","comments":"<p>This applies filters as if the blob was being checked out to the working directory under the specified filename.  This may apply CRLF filtering or other types of changes depending on the file attributes set for the blob and the content detected in it.</p>\n\n<p>The output is written into a <code>git_buf</code> which the caller must free when done (via <code>git_buf_free</code>).</p>\n\n<p>If no filters need to be applied, then the <code>out</code> buffer will just be populated with a pointer to the raw content of the blob.  In that case, be careful to <em>not</em> free the blob until done with the buffer or copy it into memory you own.</p>\n","group":"blob"},"git_blob_create_fromworkdir":{"type":"function","file":"blob.h","line":139,"lineto":139,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository cannot be bare"},{"name":"relative_path","type":"const char *","comment":"file from which the blob will be created,\n\trelative to the repository's working dir"}],"argline":"git_oid *id, git_repository *repo, const char *relative_path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the working folder of a repository\n and write it to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromdisk":{"type":"function","file":"blob.h","line":151,"lineto":151,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where the blob will be written.\n\tthis repository can be bare or not"},{"name":"path","type":"const char *","comment":"file from which the blob will be created"}],"argline":"git_oid *id, git_repository *repo, const char *path","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from the filesystem and write its content\n to the Object Database as a loose blob</p>\n","comments":"","group":"blob"},"git_blob_create_fromstream":{"type":"function","file":"blob.h","line":178,"lineto":181,"args":[{"name":"out","type":"git_writestream **","comment":"the stream into which to write"},{"name":"repo","type":"git_repository *","comment":"Repository where the blob will be written.\n        This repository can be bare or not."},{"name":"hintpath","type":"const char *","comment":"If not NULL, will be used to select data filters\n        to apply onto the content of the blob to be created."}],"argline":"git_writestream **out, git_repository *repo, const char *hintpath","sig":"git_writestream **::git_repository *::const char *","return":{"type":"int","comment":" 0 or error code"},"description":"<p>Create a stream to write a new blob into the object db</p>\n","comments":"<p>This function may need to buffer the data on disk and will in general not be the right choice if you know the size of the data to write. If you have data in memory, use <code>git_blob_create_frombuffer()</code>. If you do not, but know the size of the contents (and don&#39;t want/need to perform filtering), use <code>git_odb_open_wstream()</code>.</p>\n\n<p>Don&#39;t close this stream yourself but pass it to <code>git_blob_create_fromstream_commit()</code> to commit the write to the object db and get the object id.</p>\n\n<p>If the <code>hintpath</code> parameter is filled, it will be used to determine what git filters should be applied to the object before it is written to the object database.</p>\n","group":"blob"},"git_blob_create_fromstream_commit":{"type":"function","file":"blob.h","line":192,"lineto":194,"args":[{"name":"out","type":"git_oid *","comment":"the id of the new blob"},{"name":"stream","type":"git_writestream *","comment":"the stream to close"}],"argline":"git_oid *out, git_writestream *stream","sig":"git_oid *::git_writestream *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Close the stream and write the blob to the object db</p>\n","comments":"<p>The stream will be closed and freed.</p>\n","group":"blob"},"git_blob_create_frombuffer":{"type":"function","file":"blob.h","line":205,"lineto":206,"args":[{"name":"id","type":"git_oid *","comment":"return the id of the written blob"},{"name":"repo","type":"git_repository *","comment":"repository where to blob will be written"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_oid *id, git_repository *repo, const void *buffer, size_t len","sig":"git_oid *::git_repository *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an in-memory buffer to the ODB as a blob</p>\n","comments":"","group":"blob"},"git_blob_is_binary":{"type":"function","file":"blob.h","line":219,"lineto":219,"args":[{"name":"blob","type":"const git_blob *","comment":"The blob which content should be analyzed"}],"argline":"const git_blob *blob","sig":"const git_blob *","return":{"type":"int","comment":" 1 if the content of the blob is detected\n as binary; 0 otherwise."},"description":"<p>Determine if the blob content is most certainly binary or not.</p>\n","comments":"<p>The heuristic used to guess if a file is binary is taken from core git: Searching for NUL bytes and looking for a reasonable ratio of printable to non-printable characters among the first 8000 bytes.</p>\n","group":"blob"},"git_blob_dup":{"type":"function","file":"blob.h","line":228,"lineto":228,"args":[{"name":"out","type":"git_blob **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_blob *","comment":"Original object to copy"}],"argline":"git_blob **out, git_blob *source","sig":"git_blob **::git_blob *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a blob. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"blob"},"git_branch_create":{"type":"function","file":"branch.h","line":50,"lineto":55,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the underlying reference."},{"name":"repo","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":"Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name."},{"name":"target","type":"const git_commit *","comment":"Commit to which this branch should point. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, const git_commit *target, int force","sig":"git_reference **::git_repository *::const char *::const git_commit *::int","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit."},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>A new direct reference will be created pointing to this target commit. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The returned reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_create_from_annotated":{"type":"function","file":"branch.h","line":68,"lineto":73,"args":[{"name":"ref_out","type":"git_reference **","comment":null},{"name":"repository","type":"git_repository *","comment":null},{"name":"branch_name","type":"const char *","comment":null},{"name":"commit","type":"const git_annotated_commit *","comment":null},{"name":"force","type":"int","comment":null}],"argline":"git_reference **ref_out, git_repository *repository, const char *branch_name, const git_annotated_commit *commit, int force","sig":"git_reference **::git_repository *::const char *::const git_annotated_commit *::int","return":{"type":"int","comment":null},"description":"<p>Create a new branch pointing at a target commit</p>\n","comments":"<p>This behaves like <code>git_branch_create()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_branch_create()</code>.</p>\n","group":"branch"},"git_branch_delete":{"type":"function","file":"branch.h","line":85,"lineto":85,"args":[{"name":"branch","type":"git_reference *","comment":"A valid reference representing a branch"}],"argline":"git_reference *branch","sig":"git_reference *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing branch reference.</p>\n","comments":"<p>If the branch is successfully deleted, the passed reference object will be invalidated. The reference must be freed manually by the user.</p>\n","group":"branch"},"git_branch_iterator_new":{"type":"function","file":"branch.h","line":101,"lineto":104,"args":[{"name":"out","type":"git_branch_iterator **","comment":"the iterator"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the branches."},{"name":"list_flags","type":"git_branch_t","comment":"Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL."}],"argline":"git_branch_iterator **out, git_repository *repo, git_branch_t list_flags","sig":"git_branch_iterator **::git_repository *::git_branch_t","return":{"type":"int","comment":" 0 on success  or an error code"},"description":"<p>Create an iterator which loops over the requested branches.</p>\n","comments":"","group":"branch"},"git_branch_next":{"type":"function","file":"branch.h","line":114,"lineto":114,"args":[{"name":"out","type":"git_reference **","comment":"the reference"},{"name":"out_type","type":"git_branch_t *","comment":"the type of branch (local or remote-tracking)"},{"name":"iter","type":"git_branch_iterator *","comment":"the branch iterator"}],"argline":"git_reference **out, git_branch_t *out_type, git_branch_iterator *iter","sig":"git_reference **::git_branch_t *::git_branch_iterator *","return":{"type":"int","comment":" 0 on success, GIT_ITEROVER if there are no more branches or an error code."},"description":"<p>Retrieve the next branch from the iterator</p>\n","comments":"","group":"branch"},"git_branch_iterator_free":{"type":"function","file":"branch.h","line":121,"lineto":121,"args":[{"name":"iter","type":"git_branch_iterator *","comment":"the iterator to free"}],"argline":"git_branch_iterator *iter","sig":"git_branch_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a branch iterator</p>\n","comments":"","group":"branch"},"git_branch_move":{"type":"function","file":"branch.h","line":138,"lineto":142,"args":[{"name":"out","type":"git_reference **","comment":null},{"name":"branch","type":"git_reference *","comment":"Current underlying reference of the branch."},{"name":"new_branch_name","type":"const char *","comment":"Target name of the branch once the move\n is performed; this name is validated for consistency."},{"name":"force","type":"int","comment":"Overwrite existing branch."}],"argline":"git_reference **out, git_reference *branch, const char *new_branch_name, int force","sig":"git_reference **::git_reference *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code."},"description":"<p>Move/rename an existing local branch reference.</p>\n","comments":"<p>The new branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_lookup":{"type":"function","file":"branch.h","line":165,"lineto":169,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up branch reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the branch"},{"name":"branch_name","type":"const char *","comment":"Name of the branch to be looked-up;\n this name is validated for consistency."},{"name":"branch_type","type":"git_branch_t","comment":"Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE."}],"argline":"git_reference **out, git_repository *repo, const char *branch_name, git_branch_t branch_type","sig":"git_reference **::git_repository *::const char *::git_branch_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code."},"description":"<p>Lookup a branch by its name in a repository.</p>\n","comments":"<p>The generated reference must be freed by the user.</p>\n\n<p>The branch name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"branch"},"git_branch_name":{"type":"function","file":"branch.h","line":186,"lineto":188,"args":[{"name":"out","type":"const char **","comment":"where the pointer of branch name is stored;\n this is valid as long as the ref is not freed."},{"name":"ref","type":"const git_reference *","comment":"the reference ideally pointing to a branch"}],"argline":"const char **out, const git_reference *ref","sig":"const char **::const git_reference *","return":{"type":"int","comment":" 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch)."},"description":"<p>Return the name of the given local or remote branch.</p>\n","comments":"<p>The name of the branch matches the definition of the name for git_branch_lookup. That is, if the returned name is given to git_branch_lookup() then the reference is returned that was given to this function.</p>\n","group":"branch"},"git_branch_upstream":{"type":"function","file":"branch.h","line":202,"lineto":204,"args":[{"name":"out","type":"git_reference **","comment":"Pointer where to store the retrieved\n reference."},{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"git_reference **out, const git_reference *branch","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code."},"description":"<p>Return the reference supporting the remote tracking branch,\n given a local branch reference.</p>\n","comments":"","group":"branch"},"git_branch_set_upstream":{"type":"function","file":"branch.h","line":216,"lineto":216,"args":[{"name":"branch","type":"git_reference *","comment":"the branch to configure"},{"name":"upstream_name","type":"const char *","comment":"remote-tracking or local branch to set as\n upstream. Pass NULL to unset."}],"argline":"git_reference *branch, const char *upstream_name","sig":"git_reference *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the upstream configuration for a given local branch</p>\n","comments":"","group":"branch"},"git_branch_is_head":{"type":"function","file":"branch.h","line":245,"lineto":246,"args":[{"name":"branch","type":"const git_reference *","comment":"Current underlying reference of the branch."}],"argline":"const git_reference *branch","sig":"const git_reference *","return":{"type":"int","comment":" 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise."},"description":"<p>Determine if the current local branch is pointed at by HEAD.</p>\n","comments":"","group":"branch"},"git_buf_free":{"type":"function","file":"buffer.h","line":72,"lineto":72,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to deallocate"}],"argline":"git_buf *buffer","sig":"git_buf *","return":{"type":"void","comment":null},"description":"<p>Free the memory referred to by the git_buf.</p>\n","comments":"<p>Note that this does not free the <code>git_buf</code> itself, just the memory pointed to by <code>buffer-&gt;ptr</code>.  This will not free the memory if it looks like it was not allocated internally, but it will clear the buffer back to the empty state.</p>\n","group":"buf","examples":{"diff.c":["ex/v0.25.1/diff.html#git_buf_free-1"],"remote.c":["ex/v0.25.1/remote.html#git_buf_free-1"],"tag.c":["ex/v0.25.1/tag.html#git_buf_free-1"]}},"git_buf_grow":{"type":"function","file":"buffer.h","line":95,"lineto":95,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to be resized; may or may not be allocated yet"},{"name":"target_size","type":"size_t","comment":"The desired available size"}],"argline":"git_buf *buffer, size_t target_size","sig":"git_buf *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Resize the buffer allocation to make more space.</p>\n","comments":"<p>This will attempt to grow the buffer to accommodate the target size.</p>\n\n<p>If the buffer refers to memory that was not allocated by libgit2 (i.e. the <code>asize</code> field is zero), then <code>ptr</code> will be replaced with a newly allocated block of data.  Be careful so that memory allocated by the caller is not lost.  As a special variant, if you pass <code>target_size</code> as 0 and the memory is not allocated by libgit2, this will allocate a new buffer of size <code>size</code> and copy the external data into it.</p>\n\n<p>Currently, this will never shrink a buffer, only expand it.</p>\n\n<p>If the allocation fails, this will return an error and the buffer will be marked as invalid for future operations, invaliding the contents.</p>\n","group":"buf"},"git_buf_set":{"type":"function","file":"buffer.h","line":105,"lineto":106,"args":[{"name":"buffer","type":"git_buf *","comment":"The buffer to set"},{"name":"data","type":"const void *","comment":"The data to copy into the buffer"},{"name":"datalen","type":"size_t","comment":"The length of the data to copy into the buffer"}],"argline":"git_buf *buffer, const void *data, size_t datalen","sig":"git_buf *::const void *::size_t","return":{"type":"int","comment":" 0 on success, -1 on allocation failure"},"description":"<p>Set buffer to a copy of some raw data.</p>\n","comments":"","group":"buf"},"git_buf_is_binary":{"type":"function","file":"buffer.h","line":114,"lineto":114,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer looks like non-text data"},"description":"<p>Check quickly if buffer looks like it contains binary data</p>\n","comments":"","group":"buf"},"git_buf_contains_nul":{"type":"function","file":"buffer.h","line":122,"lineto":122,"args":[{"name":"buf","type":"const git_buf *","comment":"Buffer to check"}],"argline":"const git_buf *buf","sig":"const git_buf *","return":{"type":"int","comment":" 1 if buffer contains a NUL byte"},"description":"<p>Check quickly if buffer contains a NUL byte</p>\n","comments":"","group":"buf"},"git_checkout_init_options":{"type":"function","file":"checkout.h","line":308,"lineto":310,"args":[{"name":"opts","type":"git_checkout_options *","comment":"the `git_checkout_options` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`"}],"argline":"git_checkout_options *opts, unsigned int version","sig":"git_checkout_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_checkout_options</code> with default values. Equivalent to\n creating an instance with GIT_CHECKOUT_OPTIONS_INIT.</p>\n","comments":"","group":"checkout"},"git_checkout_head":{"type":"function","file":"checkout.h","line":329,"lineto":331,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_checkout_options *opts","sig":"git_repository *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and the working tree to match the content of\n the commit pointed at by HEAD.</p>\n","comments":"<p>Note that this is <em>not</em> the correct mechanism used to switch branches; do not change your <code>HEAD</code> and then call this method, that would leave you with checkout conflicts since your working directory would then appear to be dirty.  Instead, checkout the target of the branch and then update <code>HEAD</code> using <code>git_repository_set_head</code> to point to the branch you checked out.</p>\n","group":"checkout"},"git_checkout_index":{"type":"function","file":"checkout.h","line":342,"lineto":345,"args":[{"name":"repo","type":"git_repository *","comment":"repository into which to check out (must be non-bare)"},{"name":"index","type":"git_index *","comment":"index to be checked out (or NULL to use repository index)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, git_index *index, const git_checkout_options *opts","sig":"git_repository *::git_index *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the working tree to match the content of the index.</p>\n","comments":"","group":"checkout"},"git_checkout_tree":{"type":"function","file":"checkout.h","line":358,"lineto":361,"args":[{"name":"repo","type":"git_repository *","comment":"repository to check out (must be non-bare)"},{"name":"treeish","type":"const git_object *","comment":"a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)"},{"name":"opts","type":"const git_checkout_options *","comment":"specifies checkout options (may be NULL)"}],"argline":"git_repository *repo, const git_object *treeish, const git_checkout_options *opts","sig":"git_repository *::const git_object *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)"},"description":"<p>Updates files in the index and working tree to match the content of the\n tree pointed at by the treeish.</p>\n","comments":"","group":"checkout"},"git_cherrypick_init_options":{"type":"function","file":"cherrypick.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_cherrypick_options *","comment":"the `git_cherrypick_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION`"}],"argline":"git_cherrypick_options *opts, unsigned int version","sig":"git_cherrypick_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_cherrypick_options</code> with default values. Equivalent to\n creating an instance with GIT_CHERRYPICK_OPTIONS_INIT.</p>\n","comments":"","group":"cherrypick"},"git_cherrypick_commit":{"type":"function","file":"cherrypick.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"cherrypick_commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *cherrypick_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-picks the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the cherry-pick.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"cherrypick"},"git_cherrypick":{"type":"function","file":"cherrypick.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to cherry-pick"},{"name":"commit","type":"git_commit *","comment":"the commit to cherry-pick"},{"name":"cherrypick_options","type":"const git_cherrypick_options *","comment":"the cherry-pick options (or null for defaults)"}],"argline":"git_repository *repo, git_commit *commit, const git_cherrypick_options *cherrypick_options","sig":"git_repository *::git_commit *::const git_cherrypick_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Cherry-pick the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"cherrypick"},"git_clone_init_options":{"type":"function","file":"clone.h","line":179,"lineto":181,"args":[{"name":"opts","type":"git_clone_options *","comment":"The `git_clone_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`"}],"argline":"git_clone_options *opts, unsigned int version","sig":"git_clone_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_clone_options</code> with default values. Equivalent to\n creating an instance with GIT_CLONE_OPTIONS_INIT.</p>\n","comments":"","group":"clone"},"git_clone":{"type":"function","file":"clone.h","line":199,"lineto":203,"args":[{"name":"out","type":"git_repository **","comment":"pointer that will receive the resulting repository object"},{"name":"url","type":"const char *","comment":"the remote repository to clone"},{"name":"local_path","type":"const char *","comment":"local directory to clone to"},{"name":"options","type":"const git_clone_options *","comment":"configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed."}],"argline":"git_repository **out, const char *url, const char *local_path, const git_clone_options *options","sig":"git_repository **::const char *::const char *::const git_clone_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)"},"description":"<p>Clone a remote repository.</p>\n","comments":"<p>By default this creates its repository and initial remote to match git&#39;s defaults. You can use the options in the callback to customize how these are created.</p>\n","group":"clone","examples":{"network/clone.c":["ex/v0.25.1/network/clone.html#git_clone-1"]}},"git_commit_lookup":{"type":"function","file":"commit.h","line":36,"lineto":37,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id","sig":"git_commit **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository.</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_lookup-5","ex/v0.25.1/general.html#git_commit_lookup-6","ex/v0.25.1/general.html#git_commit_lookup-7"],"log.c":["ex/v0.25.1/log.html#git_commit_lookup-1"]}},"git_commit_lookup_prefix":{"type":"function","file":"commit.h","line":55,"lineto":56,"args":[{"name":"commit","type":"git_commit **","comment":"pointer to the looked up commit"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the commit."},{"name":"id","type":"const git_oid *","comment":"identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_commit **commit, git_repository *repo, const git_oid *id, size_t len","sig":"git_commit **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a commit object from a repository, given a prefix of its\n identifier (short id).</p>\n","comments":"<p>The returned object should be released with <code>git_commit_free</code> when no longer needed.</p>\n","group":"commit"},"git_commit_free":{"type":"function","file":"commit.h","line":70,"lineto":70,"args":[{"name":"commit","type":"git_commit *","comment":"the commit to close"}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"void","comment":null},"description":"<p>Close an open commit</p>\n","comments":"<p>This is a wrapper around git_object_free()</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using a commit. Failure to do so will cause a memory leak.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_free-8","ex/v0.25.1/general.html#git_commit_free-9","ex/v0.25.1/general.html#git_commit_free-10","ex/v0.25.1/general.html#git_commit_free-11"],"log.c":["ex/v0.25.1/log.html#git_commit_free-2","ex/v0.25.1/log.html#git_commit_free-3","ex/v0.25.1/log.html#git_commit_free-4","ex/v0.25.1/log.html#git_commit_free-5"]}},"git_commit_id":{"type":"function","file":"commit.h","line":78,"lineto":78,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" object identity for the commit."},"description":"<p>Get the id of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_id-12"],"log.c":["ex/v0.25.1/log.html#git_commit_id-6"]}},"git_commit_owner":{"type":"function","file":"commit.h","line":86,"lineto":86,"args":[{"name":"commit","type":"const git_commit *","comment":"A previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_repository *","comment":" Repository that contains this commit."},"description":"<p>Get the repository that contains the commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.25.1/log.html#git_commit_owner-7","ex/v0.25.1/log.html#git_commit_owner-8"]}},"git_commit_message_encoding":{"type":"function","file":"commit.h","line":98,"lineto":98,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" NULL, or the encoding"},"description":"<p>Get the encoding for the message of a commit,\n as a string representing a standard encoding name.</p>\n","comments":"<p>The encoding may be NULL if the <code>encoding</code> header in the commit is missing; in that case UTF-8 is assumed.</p>\n","group":"commit"},"git_commit_message":{"type":"function","file":"commit.h","line":109,"lineto":109,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the message of a commit"},"description":"<p>Get the full message of a commit.</p>\n","comments":"<p>The returned message will be slightly prettified by removing any potential leading newlines.</p>\n","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_message-3","ex/v0.25.1/cat-file.html#git_commit_message-4"],"general.c":["ex/v0.25.1/general.html#git_commit_message-13","ex/v0.25.1/general.html#git_commit_message-14","ex/v0.25.1/general.html#git_commit_message-15"],"log.c":["ex/v0.25.1/log.html#git_commit_message-9","ex/v0.25.1/log.html#git_commit_message-10"],"tag.c":["ex/v0.25.1/tag.html#git_commit_message-2"]}},"git_commit_message_raw":{"type":"function","file":"commit.h","line":117,"lineto":117,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the raw message of a commit"},"description":"<p>Get the full raw message of a commit.</p>\n","comments":"","group":"commit"},"git_commit_summary":{"type":"function","file":"commit.h","line":128,"lineto":128,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the summary of a commit or NULL on error"},"description":"<p>Get the short &quot;summary&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the summary of the commit, comprising the first paragraph of the message with whitespace trimmed and squashed.</p>\n","group":"commit"},"git_commit_body":{"type":"function","file":"commit.h","line":141,"lineto":141,"args":[{"name":"commit","type":"git_commit *","comment":"a previously loaded commit."}],"argline":"git_commit *commit","sig":"git_commit *","return":{"type":"const char *","comment":" the body of a commit or NULL when no the message only\n   consists of a summary"},"description":"<p>Get the long &quot;body&quot; of the git commit message.</p>\n","comments":"<p>The returned message is the body of the commit, comprising everything but the first paragraph of the message. Leading and trailing whitespaces are trimmed.</p>\n","group":"commit"},"git_commit_time":{"type":"function","file":"commit.h","line":149,"lineto":149,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"git_time_t","comment":" the time of a commit"},"description":"<p>Get the commit time (i.e. committer time) of a commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_time-16","ex/v0.25.1/general.html#git_commit_time-17"]}},"git_commit_time_offset":{"type":"function","file":"commit.h","line":157,"lineto":157,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"int","comment":" positive or negative timezone offset, in minutes from UTC"},"description":"<p>Get the commit timezone offset (i.e. committer&#39;s preferred timezone) of a commit.</p>\n","comments":"","group":"commit"},"git_commit_committer":{"type":"function","file":"commit.h","line":165,"lineto":165,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the committer of a commit"},"description":"<p>Get the committer of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_committer-5"],"general.c":["ex/v0.25.1/general.html#git_commit_committer-18"],"log.c":["ex/v0.25.1/log.html#git_commit_committer-11"]}},"git_commit_author":{"type":"function","file":"commit.h","line":173,"lineto":173,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_signature *","comment":" the author of a commit"},"description":"<p>Get the author of a commit.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_author-6"],"general.c":["ex/v0.25.1/general.html#git_commit_author-19","ex/v0.25.1/general.html#git_commit_author-20"],"log.c":["ex/v0.25.1/log.html#git_commit_author-12","ex/v0.25.1/log.html#git_commit_author-13"]}},"git_commit_raw_header":{"type":"function","file":"commit.h","line":181,"lineto":181,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit"}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const char *","comment":" the header text of the commit"},"description":"<p>Get the full raw text of the commit header.</p>\n","comments":"","group":"commit"},"git_commit_tree":{"type":"function","file":"commit.h","line":190,"lineto":190,"args":[{"name":"tree_out","type":"git_tree **","comment":"pointer where to store the tree object"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"git_tree **tree_out, const git_commit *commit","sig":"git_tree **::const git_commit *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tree pointed to by a commit.</p>\n","comments":"","group":"commit","examples":{"log.c":["ex/v0.25.1/log.html#git_commit_tree-14","ex/v0.25.1/log.html#git_commit_tree-15","ex/v0.25.1/log.html#git_commit_tree-16","ex/v0.25.1/log.html#git_commit_tree-17","ex/v0.25.1/log.html#git_commit_tree-18"]}},"git_commit_tree_id":{"type":"function","file":"commit.h","line":200,"lineto":200,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"const git_oid *","comment":" the id of tree pointed to by commit."},"description":"<p>Get the id of the tree pointed to by a commit. This differs from\n <code>git_commit_tree</code> in that no attempts are made to fetch an object\n from the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_tree_id-7"]}},"git_commit_parentcount":{"type":"function","file":"commit.h","line":208,"lineto":208,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."}],"argline":"const git_commit *commit","sig":"const git_commit *","return":{"type":"unsigned int","comment":" integer of count of parents"},"description":"<p>Get the number of parents of this commit</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_parentcount-8"],"general.c":["ex/v0.25.1/general.html#git_commit_parentcount-21"],"log.c":["ex/v0.25.1/log.html#git_commit_parentcount-19","ex/v0.25.1/log.html#git_commit_parentcount-20"]}},"git_commit_parent":{"type":"function","file":"commit.h","line":218,"lineto":221,"args":[{"name":"out","type":"git_commit **","comment":"Pointer where to store the parent commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"git_commit **out, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the specified parent of the commit.</p>\n","comments":"","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_parent-22"],"log.c":["ex/v0.25.1/log.html#git_commit_parent-21","ex/v0.25.1/log.html#git_commit_parent-22"]}},"git_commit_parent_id":{"type":"function","file":"commit.h","line":232,"lineto":234,"args":[{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the position of the parent (from 0 to `parentcount`)"}],"argline":"const git_commit *commit, unsigned int n","sig":"const git_commit *::unsigned int","return":{"type":"const git_oid *","comment":" the id of the parent, NULL on error."},"description":"<p>Get the oid of a specified parent for a commit. This is different from\n <code>git_commit_parent</code>, which will attempt to load the parent commit from\n the ODB.</p>\n","comments":"","group":"commit","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_commit_parent_id-9"],"log.c":["ex/v0.25.1/log.html#git_commit_parent_id-23"]}},"git_commit_nth_gen_ancestor":{"type":"function","file":"commit.h","line":250,"lineto":253,"args":[{"name":"ancestor","type":"git_commit **","comment":"Pointer where to store the ancestor commit"},{"name":"commit","type":"const git_commit *","comment":"a previously loaded commit."},{"name":"n","type":"unsigned int","comment":"the requested generation"}],"argline":"git_commit **ancestor, const git_commit *commit, unsigned int n","sig":"git_commit **::const git_commit *::unsigned int","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code"},"description":"<p>Get the commit object that is the \n&lt;n</p>\n\n<blockquote>\n<p>th generation ancestor\n of the named commit object, following only the first parents.\n The returned commit has to be freed by the caller.</p>\n</blockquote>\n","comments":"<p>Passing <code>0</code> as the generation number returns another instance of the base commit itself.</p>\n","group":"commit"},"git_commit_header_field":{"type":"function","file":"commit.h","line":264,"lineto":264,"args":[{"name":"out","type":"git_buf *","comment":"the buffer to fill"},{"name":"commit","type":"const git_commit *","comment":"the commit to look in"},{"name":"field","type":"const char *","comment":"the header field to return"}],"argline":"git_buf *out, const git_commit *commit, const char *field","sig":"git_buf *::const git_commit *::const char *","return":{"type":"int","comment":" 0 on succeess, GIT_ENOTFOUND if the field does not exist,\n or an error code"},"description":"<p>Get an arbitrary header field</p>\n","comments":"","group":"commit"},"git_commit_extract_signature":{"type":"function","file":"commit.h","line":282,"lineto":282,"args":[{"name":"signature","type":"git_buf *","comment":"the signature block"},{"name":"signed_data","type":"git_buf *","comment":"signed data; this is the commit contents minus the signature block"},{"name":"repo","type":"git_repository *","comment":"the repository in which the commit exists"},{"name":"commit_id","type":"git_oid *","comment":"the commit from which to extract the data"},{"name":"field","type":"const char *","comment":"the name of the header field containing the signature\n block; pass `NULL` to extract the default 'gpgsig'"}],"argline":"git_buf *signature, git_buf *signed_data, git_repository *repo, git_oid *commit_id, const char *field","sig":"git_buf *::git_buf *::git_repository *::git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the id is not for a commit\n or the commit does not have a signature."},"description":"<p>Extract the signature from a commit</p>\n","comments":"<p>If the id is not for a commit, the error class will be <code>GITERR_INVALID</code>. If the commit does not have a signature, the error class will be <code>GITERR_OBJECT</code>.</p>\n","group":"commit"},"git_commit_create":{"type":"function","file":"commit.h","line":328,"lineto":338,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the commit"},{"name":"update_ref","type":"const char *","comment":"If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch."},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it"},"description":"<p>Create new commit in the repository from a list of <code>git_object</code> pointers</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n","group":"commit"},"git_commit_create_v":{"type":"function","file":"commit.h","line":354,"lineto":364,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null},{"name":"parent_count","type":"size_t","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository using a variable argument list.</p>\n","comments":"<p>The message will <strong>not</strong> be cleaned up automatically. You can do that with the <code>git_message_prettify()</code> function.</p>\n\n<p>The parents for the commit are specified as a variable list of pointers to <code>const git_commit *</code>. Note that this is a convenience method which may not be safe to export for certain languages or compilers</p>\n\n<p>All other parameters remain the same as <code>git_commit_create()</code>.</p>\n","group":"commit","examples":{"general.c":["ex/v0.25.1/general.html#git_commit_create_v-23"],"init.c":["ex/v0.25.1/init.html#git_commit_create_v-1"]}},"git_commit_amend":{"type":"function","file":"commit.h","line":387,"lineto":395,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"commit_to_amend","type":"const git_commit *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_tree *","comment":null}],"argline":"git_oid *id, const git_commit *commit_to_amend, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree","sig":"git_oid *::const git_commit *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *","return":{"type":"int","comment":null},"description":"<p>Amend an existing commit by replacing only non-NULL values.</p>\n","comments":"<p>This creates a new commit that is exactly the same as the old commit, except that any non-NULL values will be updated.  The new commit has the same parents as the old commit.</p>\n\n<p>The <code>update_ref</code> value works as in the regular <code>git_commit_create()</code>, updating the ref to point to the newly rewritten commit.  If you want to amend a commit that is not currently the tip of the branch and then rewrite the following commits to reach a ref, pass this as NULL and update the rest of the commit chain and ref separately.</p>\n\n<p>Unlike <code>git_commit_create()</code>, the <code>author</code>, <code>committer</code>, <code>message</code>, <code>message_encoding</code>, and <code>tree</code> parameters can be NULL in which case this will use the values from the original <code>commit_to_amend</code>.</p>\n\n<p>All parameters have the same meanings as in <code>git_commit_create()</code>.</p>\n","group":"commit"},"git_commit_create_buffer":{"type":"function","file":"commit.h","line":432,"lineto":441,"args":[{"name":"out","type":"git_buf *","comment":"the buffer into which to write the commit object content"},{"name":"repo","type":"git_repository *","comment":"Repository where the referenced tree and parents live"},{"name":"author","type":"const git_signature *","comment":"Signature with author and author time of commit"},{"name":"committer","type":"const git_signature *","comment":"Signature with committer and * commit time of commit"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed."},{"name":"message","type":"const char *","comment":"Full message for this commit"},{"name":"tree","type":"const git_tree *","comment":"An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`."},{"name":"parent_count","type":"size_t","comment":"Number of parents for this commit"},{"name":"parents","type":"const git_commit *[]","comment":"Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`."}],"argline":"git_buf *out, git_repository *repo, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_tree *tree, size_t parent_count, const git_commit *[] parents","sig":"git_buf *::git_repository *::const git_signature *::const git_signature *::const char *::const char *::const git_tree *::size_t::const git_commit *[]","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit and write it into a buffer</p>\n","comments":"<p>Create a commit as with <code>git_commit_create()</code> but instead of writing it to the objectdb, write the contents of the object into a buffer.</p>\n","group":"commit"},"git_commit_create_with_signature":{"type":"function","file":"commit.h","line":457,"lineto":462,"args":[{"name":"out","type":"git_oid *","comment":"the resulting commit id"},{"name":"repo","type":"git_repository *","comment":null},{"name":"commit_content","type":"const char *","comment":"the content of the unsigned commit object"},{"name":"signature","type":"const char *","comment":"the signature to add to the commit"},{"name":"signature_field","type":"const char *","comment":"which header field should contain this\n signature. Leave `NULL` for the default of \"gpgsig\""}],"argline":"git_oid *out, git_repository *repo, const char *commit_content, const char *signature, const char *signature_field","sig":"git_oid *::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a commit object from the given buffer and signature</p>\n","comments":"<p>Given the unsigned commit object&#39;s contents, its signature and the header field in which to store the signature, attach the signature to the commit and write it into the given repository.</p>\n","group":"commit"},"git_commit_dup":{"type":"function","file":"commit.h","line":471,"lineto":471,"args":[{"name":"out","type":"git_commit **","comment":"Pointer to store the copy of the commit"},{"name":"source","type":"git_commit *","comment":"Original commit to copy"}],"argline":"git_commit **out, git_commit *source","sig":"git_commit **::git_commit *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a commit. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"commit"},"git_libgit2_version":{"type":"function","file":"common.h","line":105,"lineto":105,"args":[{"name":"major","type":"int *","comment":"Store the major version number"},{"name":"minor","type":"int *","comment":"Store the minor version number"},{"name":"rev","type":"int *","comment":"Store the revision (patch) number"}],"argline":"int *major, int *minor, int *rev","sig":"int *::int *::int *","return":{"type":"void","comment":null},"description":"<p>Return the version of the libgit2 library\n being currently used.</p>\n","comments":"","group":"libgit2"},"git_libgit2_features":{"type":"function","file":"common.h","line":154,"lineto":154,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" A combination of GIT_FEATURE_* values."},"description":"<p>Query compile time options for libgit2.</p>\n","comments":"<ul>\n<li><p>GIT_FEATURE_THREADS   Libgit2 was compiled with thread support. Note that thread support is   still to be seen as a &#39;work in progress&#39; - basic object lookups are   believed to be threadsafe, but other operations may not be.</p></li>\n<li><p>GIT_FEATURE_HTTPS   Libgit2 supports the https:// protocol. This requires the openssl   library to be found when compiling libgit2.</p></li>\n<li><p>GIT_FEATURE_SSH   Libgit2 supports the SSH protocol for network operations. This requires   the libssh2 library to be found when compiling libgit2</p></li>\n</ul>\n","group":"libgit2"},"git_libgit2_opts":{"type":"function","file":"common.h","line":302,"lineto":302,"args":[{"name":"option","type":"int","comment":"Option key"}],"argline":"int option","sig":"int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set or query a library global option</p>\n","comments":"<p>Available options:</p>\n\n<pre><code>* opts(GIT_OPT_GET_MWINDOW_SIZE, size_t *):\n\n    &gt; Get the maximum mmap window size\n\n* opts(GIT_OPT_SET_MWINDOW_SIZE, size_t):\n\n    &gt; Set the maximum mmap window size\n\n* opts(GIT_OPT_GET_MWINDOW_MAPPED_LIMIT, size_t *):\n\n    &gt; Get the maximum memory that will be mapped in total by the library\n\n* opts(GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size_t):\n\n    &gt;Set the maximum amount of memory that can be mapped at any time        by the library\n\n* opts(GIT_OPT_GET_SEARCH_PATH, int level, git_buf *buf)\n\n    &gt; Get the search path for a given level of config data.  &quot;level&quot; must       &gt; be one of `GIT_CONFIG_LEVEL_SYSTEM`, `GIT_CONFIG_LEVEL_GLOBAL`,       &gt; `GIT_CONFIG_LEVEL_XDG`, or `GIT_CONFIG_LEVEL_PROGRAMDATA`.        &gt; The search path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_SEARCH_PATH, int level, const char *path)\n\n    &gt; Set the search path for a level of config data.  The search path      &gt; applied to shared attributes and ignore files, too.       &gt;       &gt; - `path` lists directories delimited by GIT_PATH_LIST_SEPARATOR.      &gt;   Pass NULL to reset to the default (generally based on environment       &gt;   variables).  Use magic path `$PATH` to include the old value        &gt;   of the path (if you want to prepend or append, for instance).       &gt;       &gt; - `level` must be `GIT_CONFIG_LEVEL_SYSTEM`,      &gt;   `GIT_CONFIG_LEVEL_GLOBAL`, `GIT_CONFIG_LEVEL_XDG`, or       &gt;   `GIT_CONFIG_LEVEL_PROGRAMDATA`.\n\n* opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, git_otype type, size_t size)\n\n    &gt; Set the maximum data size for the given type of object to be      &gt; considered eligible for caching in memory.  Setting to value to       &gt; zero means that that type of object will not be cached.       &gt; Defaults to 0 for GIT_OBJ_BLOB (i.e. won&#39;t cache blobs) and 4k        &gt; for GIT_OBJ_COMMIT, GIT_OBJ_TREE, and GIT_OBJ_TAG.\n\n* opts(GIT_OPT_SET_CACHE_MAX_SIZE, ssize_t max_storage_bytes)\n\n    &gt; Set the maximum total data size that will be cached in memory     &gt; across all repositories before libgit2 starts evicting objects        &gt; from the cache.  This is a soft limit, in that the library might      &gt; briefly exceed it, but will start aggressively evicting objects       &gt; from cache when that happens.  The default cache size is 256MB.\n\n* opts(GIT_OPT_ENABLE_CACHING, int enabled)\n\n    &gt; Enable or disable caching completely.     &gt;       &gt; Because caches are repository-specific, disabling the cache       &gt; cannot immediately clear all cached objects, but each cache will      &gt; be cleared on the next attempt to update anything in it.\n\n* opts(GIT_OPT_GET_CACHED_MEMORY, ssize_t *current, ssize_t *allowed)\n\n    &gt; Get the current bytes in cache and the maximum that would be      &gt; allowed in the cache.\n\n* opts(GIT_OPT_GET_TEMPLATE_PATH, git_buf *out)\n\n    &gt; Get the default template path.        &gt; The path is written to the `out` buffer.\n\n* opts(GIT_OPT_SET_TEMPLATE_PATH, const char *path)\n\n    &gt; Set the default template path.        &gt;       &gt; - `path` directory of template.\n\n* opts(GIT_OPT_SET_SSL_CERT_LOCATIONS, const char *file, const char *path)\n\n    &gt; Set the SSL certificate-authority locations.      &gt;       &gt; - `file` is the location of a file containing several     &gt;   certificates concatenated together.     &gt; - `path` is the location of a directory holding several       &gt;   certificates, one per file.     &gt;       &gt; Either parameter may be `NULL`, but not both.\n\n* opts(GIT_OPT_SET_USER_AGENT, const char *user_agent)\n\n    &gt; Set the value of the User-Agent header.  This value will be       &gt; appended to &quot;git/1.0&quot;, for compatibility with other git clients.      &gt;       &gt; - `user_agent` is the value that will be delivered as the     &gt;   User-Agent header on HTTP requests.\n\n* opts(GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, int enabled)\n\n    &gt; Enable strict input validation when creating new objects      &gt; to ensure that all inputs to the new objects are valid.  For      &gt; example, when this is enabled, the parent(s) and tree inputs      &gt; will be validated when creating a new commit.  This defaults      &gt; to enabled.\n\n* opts(GIT_OPT_SET_SSL_CIPHERS, const char *ciphers)\n\n    &gt; Set the SSL ciphers use for HTTPS connections.        &gt;       &gt; - `ciphers` is the list of ciphers that are eanbled.\n</code></pre>\n","group":"libgit2"},"git_config_entry_free":{"type":"function","file":"config.h","line":75,"lineto":75,"args":[{"name":"","type":"git_config_entry *","comment":null}],"argline":"git_config_entry *","sig":"git_config_entry *","return":{"type":"void","comment":null},"description":"<p>Free a config entry</p>\n","comments":"","group":"config"},"git_config_find_global":{"type":"function","file":"config.h","line":116,"lineto":116,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a global configuration file has been found. Its path will be stored in `out`."},"description":"<p>Locate the path to the global configuration file</p>\n","comments":"<p>The user or global configuration file is usually located in <code>$HOME/.gitconfig</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the global configuration file.</p>\n\n<p>This method will not guess the path to the xdg compatible config file (.config/git/config).</p>\n","group":"config"},"git_config_find_xdg":{"type":"function","file":"config.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a xdg compatible configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the global xdg compatible configuration file</p>\n","comments":"<p>The xdg compatible configuration file is usually located in <code>$HOME/.config/git/config</code>.</p>\n\n<p>This method will try to guess the full path to that file, if the file exists. The returned path may be used on any <code>git_config</code> call to load the xdg compatible configuration file.</p>\n","group":"config"},"git_config_find_system":{"type":"function","file":"config.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a system configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the system configuration file</p>\n","comments":"<p>If /etc/gitconfig doesn&#39;t exist, it will look for %PROGRAMFILES%.</p>\n","group":"config"},"git_config_find_programdata":{"type":"function","file":"config.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"Pointer to a user-allocated git_buf in which to store the path"}],"argline":"git_buf *out","sig":"git_buf *","return":{"type":"int","comment":" 0 if a ProgramData configuration file has been\n\tfound. Its path will be stored in `out`."},"description":"<p>Locate the path to the configuration file in ProgramData</p>\n","comments":"<p>Look for the file in %PROGRAMDATA% used by portable git.</p>\n","group":"config"},"git_config_open_default":{"type":"function","file":"config.h","line":168,"lineto":168,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the config instance"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open the global, XDG and system configuration files</p>\n","comments":"<p>Utility wrapper that finds the global, XDG and system configuration files and opens them into a single prioritized config object that can be used when accessing default config data outside a repository.</p>\n","group":"config"},"git_config_new":{"type":"function","file":"config.h","line":179,"lineto":179,"args":[{"name":"out","type":"git_config **","comment":"pointer to the new configuration"}],"argline":"git_config **out","sig":"git_config **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new configuration object</p>\n","comments":"<p>This object is empty, so you have to add a file to it before you can do anything with it.</p>\n","group":"config"},"git_config_add_file_ondisk":{"type":"function","file":"config.h","line":206,"lineto":210,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"path","type":"const char *","comment":"path to the configuration file to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"replace config file at the given priority level"}],"argline":"git_config *cfg, const char *path, git_config_level_t level, int force","sig":"git_config *::const char *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0),\n  GIT_ENOTFOUND when the file doesn't exist or error code"},"description":"<p>Add an on-disk config file instance to an existing config</p>\n","comments":"<p>The on-disk file pointed at by <code>path</code> will be opened and parsed; it&#39;s expected to be a native Git config file following the default Git config syntax (see man git-config).</p>\n\n<p>If the file does not exist, the file will still be added and it will be created the first time we write to it.</p>\n\n<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_config_open_ondisk":{"type":"function","file":"config.h","line":224,"lineto":224,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"path","type":"const char *","comment":"Path to the on-disk file to open"}],"argline":"git_config **out, const char *path","sig":"git_config **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new config instance containing a single on-disk file</p>\n","comments":"<p>This method is a simple utility wrapper for the following sequence of calls:   - git_config_new    - git_config_add_file_ondisk</p>\n","group":"config","examples":{"general.c":["ex/v0.25.1/general.html#git_config_open_ondisk-24"]}},"git_config_open_level":{"type":"function","file":"config.h","line":242,"lineto":245,"args":[{"name":"out","type":"git_config **","comment":"The configuration instance to create"},{"name":"parent","type":"const git_config *","comment":"Multi-level config to search for the given level"},{"name":"level","type":"git_config_level_t","comment":"Configuration level to search for"}],"argline":"git_config **out, const git_config *parent, git_config_level_t level","sig":"git_config **::const git_config *::git_config_level_t","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the passed level cannot be found in the\n multi-level parent config, or an error code"},"description":"<p>Build a single-level focused config object from a multi-level one.</p>\n","comments":"<p>The returned config object can be used to perform get/set/delete operations on a single specific level.</p>\n\n<p>Getting several times the same level from the same parent multi-level config will return different config instances, but containing the same config_file instance.</p>\n","group":"config"},"git_config_open_global":{"type":"function","file":"config.h","line":259,"lineto":259,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the config object"},{"name":"config","type":"git_config *","comment":"the config object in which to look"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":null},"description":"<p>Open the global/XDG configuration file according to git&#39;s rules</p>\n","comments":"<p>Git allows you to store your global configuration at <code>$HOME/.config</code> or <code>$XDG_CONFIG_HOME/git/config</code>. For backwards compatability, the XDG file shouldn&#39;t be used unless the use has created it explicitly. With this function you&#39;ll open the correct one to write to.</p>\n","group":"config"},"git_config_snapshot":{"type":"function","file":"config.h","line":275,"lineto":275,"args":[{"name":"out","type":"git_config **","comment":"pointer in which to store the snapshot config object"},{"name":"config","type":"git_config *","comment":"configuration to snapshot"}],"argline":"git_config **out, git_config *config","sig":"git_config **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a snapshot of the configuration</p>\n","comments":"<p>Create a snapshot of the current state of a configuration, which allows you to look into a consistent view of the configuration for looking up complex values (e.g. a remote, submodule).</p>\n\n<p>The string returned when querying such a config object is valid until it is freed.</p>\n","group":"config"},"git_config_free":{"type":"function","file":"config.h","line":282,"lineto":282,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to free"}],"argline":"git_config *cfg","sig":"git_config *","return":{"type":"void","comment":null},"description":"<p>Free the configuration and its associated memory and files</p>\n","comments":"","group":"config"},"git_config_get_entry":{"type":"function","file":"config.h","line":294,"lineto":297,"args":[{"name":"out","type":"git_config_entry **","comment":"pointer to the variable git_config_entry"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_config_entry **out, const git_config *cfg, const char *name","sig":"git_config_entry **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the git_config_entry of a config variable.</p>\n","comments":"<p>Free the git_config_entry after use with <code>git_config_entry_free()</code>.</p>\n","group":"config"},"git_config_get_int32":{"type":"function","file":"config.h","line":311,"lineto":311,"args":[{"name":"out","type":"int32_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int32_t *out, const git_config *cfg, const char *name","sig":"int32_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of an integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.25.1/general.html#git_config_get_int32-25"]}},"git_config_get_int64":{"type":"function","file":"config.h","line":325,"lineto":325,"args":[{"name":"out","type":"int64_t *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int64_t *out, const git_config *cfg, const char *name","sig":"int64_t *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a long integer config variable.</p>\n","comments":"<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_bool":{"type":"function","file":"config.h","line":342,"lineto":342,"args":[{"name":"out","type":"int *","comment":"pointer to the variable where the value should be stored"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"int *out, const git_config *cfg, const char *name","sig":"int *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a boolean config variable.</p>\n","comments":"<p>This function uses the usual C convention of 0 being false and anything else true.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_path":{"type":"function","file":"config.h","line":360,"lineto":360,"args":[{"name":"out","type":"git_buf *","comment":"the buffer in which to store the result"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a path config variable.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_string":{"type":"function","file":"config.h","line":378,"lineto":378,"args":[{"name":"out","type":"const char **","comment":"pointer to the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"const char **out, const git_config *cfg, const char *name","sig":"const char **::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>This function can only be used on snapshot config objects. The string is owned by the config and should not be freed by the user. The pointer will be valid until the config is freed.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config","examples":{"general.c":["ex/v0.25.1/general.html#git_config_get_string-26"]}},"git_config_get_string_buf":{"type":"function","file":"config.h","line":394,"lineto":394,"args":[{"name":"out","type":"git_buf *","comment":"buffer in which to store the string"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"}],"argline":"git_buf *out, const git_config *cfg, const char *name","sig":"git_buf *::const git_config *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the value of a string config variable.</p>\n","comments":"<p>The value of the config will be copied into the buffer.</p>\n\n<p>All config files will be looked into, in the order of their defined level. A higher level means a higher priority. The first occurrence of the variable will be returned here.</p>\n","group":"config"},"git_config_get_multivar_foreach":{"type":"function","file":"config.h","line":408,"lineto":408,"args":[{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to be called on each value of the variable"},{"name":"payload","type":"void *","comment":"opaque pointer to pass to the callback"}],"argline":"const git_config *cfg, const char *name, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar in a foreach callback</p>\n","comments":"<p>The callback will be called on each variable found</p>\n","group":"config"},"git_config_multivar_iterator_new":{"type":"function","file":"config.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"regular expression to filter which variables we're\n interested in. Use NULL to indicate all"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *name, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Get each value of a multivar</p>\n","comments":"","group":"config"},"git_config_next":{"type":"function","file":"config.h","line":431,"lineto":431,"args":[{"name":"entry","type":"git_config_entry **","comment":"pointer to store the entry"},{"name":"iter","type":"git_config_iterator *","comment":"the iterator"}],"argline":"git_config_entry **entry, git_config_iterator *iter","sig":"git_config_entry **::git_config_iterator *","return":{"type":"int","comment":" 0 or an error code. GIT_ITEROVER if the iteration has completed"},"description":"<p>Return the current entry and advance the iterator</p>\n","comments":"<p>The pointers returned by this function are valid until the iterator is freed.</p>\n","group":"config"},"git_config_iterator_free":{"type":"function","file":"config.h","line":438,"lineto":438,"args":[{"name":"iter","type":"git_config_iterator *","comment":"the iterator to free"}],"argline":"git_config_iterator *iter","sig":"git_config_iterator *","return":{"type":"void","comment":null},"description":"<p>Free a config iterator</p>\n","comments":"","group":"config"},"git_config_set_int32":{"type":"function","file":"config.h","line":449,"lineto":449,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int32_t","comment":"Integer value for the variable"}],"argline":"git_config *cfg, const char *name, int32_t value","sig":"git_config *::const char *::int32_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of an integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_int64":{"type":"function","file":"config.h","line":460,"lineto":460,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int64_t","comment":"Long integer value for the variable"}],"argline":"git_config *cfg, const char *name, int64_t value","sig":"git_config *::const char *::int64_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a long integer config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_bool":{"type":"function","file":"config.h","line":471,"lineto":471,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"int","comment":"the value to store"}],"argline":"git_config *cfg, const char *name, int value","sig":"git_config *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a boolean config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_set_string":{"type":"function","file":"config.h","line":485,"lineto":485,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"value","type":"const char *","comment":"the string to store."}],"argline":"git_config *cfg, const char *name, const char *value","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the value of a string config variable in the config file\n with the highest level (usually the local one).</p>\n","comments":"<p>A copy of the string is made and the user is free to use it afterwards.</p>\n","group":"config"},"git_config_set_multivar":{"type":"function","file":"config.h","line":495,"lineto":495,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variable"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to replace"},{"name":"value","type":"const char *","comment":"the new value."}],"argline":"git_config *cfg, const char *name, const char *regexp, const char *value","sig":"git_config *::const char *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_delete_entry":{"type":"function","file":"config.h","line":504,"lineto":504,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration"},{"name":"name","type":"const char *","comment":"the variable to delete"}],"argline":"git_config *cfg, const char *name","sig":"git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Delete a config variable from the config file\n with the highest level (usually the local one).</p>\n","comments":"","group":"config"},"git_config_delete_multivar":{"type":"function","file":"config.h","line":515,"lineto":515,"args":[{"name":"cfg","type":"git_config *","comment":"where to look for the variables"},{"name":"name","type":"const char *","comment":"the variable's name"},{"name":"regexp","type":"const char *","comment":"a regular expression to indicate which values to delete"}],"argline":"git_config *cfg, const char *name, const char *regexp","sig":"git_config *::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Deletes one or several entries from a multivar in the local config file.</p>\n","comments":"","group":"config"},"git_config_foreach":{"type":"function","file":"config.h","line":533,"lineto":536,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, git_config_foreach_cb callback, void *payload","sig":"const git_config *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform an operation on each config variable.</p>\n","comments":"<p>The callback receives the normalized name and value of each variable in the config backend, and the data pointer passed to this function. If the callback returns a non-zero value, the function stops iterating and returns that value to the caller.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_iterator_new":{"type":"function","file":"config.h","line":547,"lineto":547,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"}],"argline":"git_config_iterator **out, const git_config *cfg","sig":"git_config_iterator **::const git_config *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_iterator_glob_new":{"type":"function","file":"config.h","line":559,"lineto":559,"args":[{"name":"out","type":"git_config_iterator **","comment":"pointer to store the iterator"},{"name":"cfg","type":"const git_config *","comment":"where to ge the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match the names"}],"argline":"git_config_iterator **out, const git_config *cfg, const char *regexp","sig":"git_config_iterator **::const git_config *::const char *","return":{"type":"int","comment":null},"description":"<p>Iterate over all the config variables whose name matches a pattern</p>\n","comments":"<p>Use <code>git_config_next</code> to advance the iteration and <code>git_config_iterator_free</code> when done.</p>\n","group":"config"},"git_config_foreach_match":{"type":"function","file":"config.h","line":577,"lineto":581,"args":[{"name":"cfg","type":"const git_config *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"const git_config *cfg, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"const git_config *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":" 0 or the return value of the callback which didn't return 0"},"description":"<p>Perform an operation on each config variable matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach</code> with an additional filter of a regular expression that filters which config keys are passed to the callback.</p>\n\n<p>The pointers passed to the callback are only valid as long as the iteration is ongoing.</p>\n","group":"config"},"git_config_get_mapped":{"type":"function","file":"config.h","line":617,"lineto":622,"args":[{"name":"out","type":"int *","comment":"place to store the result of the mapping"},{"name":"cfg","type":"const git_config *","comment":"config file to get the variables from"},{"name":"name","type":"const char *","comment":"name of the config variable to lookup"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"}],"argline":"int *out, const git_config *cfg, const char *name, const git_cvar_map *maps, size_t map_n","sig":"int *::const git_config *::const char *::const git_cvar_map *::size_t","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Query the value of a config variable and return it mapped to\n an integer constant.</p>\n","comments":"<p>This is a helper method to easily map different possible values to a variable to integer constants that easily identify them.</p>\n\n<p>A mapping array looks as follows:</p>\n\n<pre><code>git_cvar_map autocrlf_mapping[] = {     {GIT_CVAR_FALSE, NULL, GIT_AUTO_CRLF_FALSE},        {GIT_CVAR_TRUE, NULL, GIT_AUTO_CRLF_TRUE},      {GIT_CVAR_STRING, &quot;input&quot;, GIT_AUTO_CRLF_INPUT},        {GIT_CVAR_STRING, &quot;default&quot;, GIT_AUTO_CRLF_DEFAULT}};\n</code></pre>\n\n<p>On any &quot;false&quot; value for the variable (e.g. &quot;false&quot;, &quot;FALSE&quot;, &quot;no&quot;), the mapping will store <code>GIT_AUTO_CRLF_FALSE</code> in the <code>out</code> parameter.</p>\n\n<p>The same thing applies for any &quot;true&quot; value such as &quot;true&quot;, &quot;yes&quot; or &quot;1&quot;, storing the <code>GIT_AUTO_CRLF_TRUE</code> variable.</p>\n\n<p>Otherwise, if the value matches the string &quot;input&quot; (with case insensitive comparison), the given constant will be stored in <code>out</code>, and likewise for &quot;default&quot;.</p>\n\n<p>If not a single match can be made to store in <code>out</code>, an error code will be returned.</p>\n","group":"config"},"git_config_lookup_map_value":{"type":"function","file":"config.h","line":632,"lineto":636,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"maps","type":"const git_cvar_map *","comment":"array of `git_cvar_map` objects specifying the possible mappings"},{"name":"map_n","type":"size_t","comment":"number of mapping objects in `maps`"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const git_cvar_map *maps, size_t map_n, const char *value","sig":"int *::const git_cvar_map *::size_t::const char *","return":{"type":"int","comment":null},"description":"<p>Maps a string value to an integer constant</p>\n","comments":"","group":"config"},"git_config_parse_bool":{"type":"function","file":"config.h","line":648,"lineto":648,"args":[{"name":"out","type":"int *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int *out, const char *value","sig":"int *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a bool.</p>\n","comments":"<p>Valid values for true are: &#39;true&#39;, &#39;yes&#39;, &#39;on&#39;, 1 or any  number different from 0 Valid values for false are: &#39;false&#39;, &#39;no&#39;, &#39;off&#39;, 0</p>\n","group":"config"},"git_config_parse_int32":{"type":"function","file":"config.h","line":660,"lineto":660,"args":[{"name":"out","type":"int32_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int32_t *out, const char *value","sig":"int32_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int32.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_int64":{"type":"function","file":"config.h","line":672,"lineto":672,"args":[{"name":"out","type":"int64_t *","comment":"place to store the result of the parsing"},{"name":"value","type":"const char *","comment":"value to parse"}],"argline":"int64_t *out, const char *value","sig":"int64_t *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as an int64.</p>\n","comments":"<p>An optional value suffix of &#39;k&#39;, &#39;m&#39;, or &#39;g&#39; will cause the value to be multiplied by 1024, 1048576, or 1073741824 prior to output.</p>\n","group":"config"},"git_config_parse_path":{"type":"function","file":"config.h","line":687,"lineto":687,"args":[{"name":"out","type":"git_buf *","comment":"placae to store the result of parsing"},{"name":"value","type":"const char *","comment":"the path to evaluate"}],"argline":"git_buf *out, const char *value","sig":"git_buf *::const char *","return":{"type":"int","comment":null},"description":"<p>Parse a string value as a path.</p>\n","comments":"<p>A leading &#39;~&#39; will be expanded to the global search path (which defaults to the user&#39;s home directory but can be overridden via <code>git_libgit2_opts()</code>.</p>\n\n<p>If the value does not begin with a tilde, the input will be returned.</p>\n","group":"config"},"git_config_backend_foreach_match":{"type":"function","file":"config.h","line":701,"lineto":705,"args":[{"name":"backend","type":"git_config_backend *","comment":"where to get the variables from"},{"name":"regexp","type":"const char *","comment":"regular expression to match against config names (can be NULL)"},{"name":"callback","type":"git_config_foreach_cb","comment":"the function to call on each variable"},{"name":"payload","type":"void *","comment":"the data to pass to the callback"}],"argline":"git_config_backend *backend, const char *regexp, git_config_foreach_cb callback, void *payload","sig":"git_config_backend *::const char *::git_config_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Perform an operation on each config variable in given config backend\n matching a regular expression.</p>\n","comments":"<p>This behaviors like <code>git_config_foreach_match</code> except instead of all config entries it just enumerates through the given backend entry.</p>\n","group":"config"},"git_config_lock":{"type":"function","file":"config.h","line":724,"lineto":724,"args":[{"name":"tx","type":"git_transaction **","comment":"the resulting transaction, use this to commit or undo the\n changes"},{"name":"cfg","type":"git_config *","comment":"the configuration in which to lock"}],"argline":"git_transaction **tx, git_config *cfg","sig":"git_transaction **::git_config *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lock the backend with the highest priority</p>\n","comments":"<p>Locking disallows anybody else from writing to that backend. Any updates made after locking will not be visible to a reader until the file is unlocked.</p>\n\n<p>You can apply the changes by calling <code>git_transaction_commit()</code> before freeing the transaction. Either of these actions will unlock the config.</p>\n","group":"config"},"git_cred_userpass":{"type":"function","file":"cred_helpers.h","line":43,"lineto":48,"args":[{"name":"cred","type":"git_cred **","comment":"The newly created credential object."},{"name":"url","type":"const char *","comment":"The resource for which we are demanding a credential."},{"name":"user_from_url","type":"const char *","comment":"The username that was embedded in a \"user\n@\nhost\"\n                          remote url, or NULL if not included."},{"name":"allowed_types","type":"unsigned int","comment":"A bitmask stating which cred types are OK to return."},{"name":"payload","type":"void *","comment":"The payload provided when specifying this callback.  (This is\n        interpreted as a `git_cred_userpass_payload*`.)"}],"argline":"git_cred **cred, const char *url, const char *user_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Stock callback usable as a git_cred_acquire_cb.  This calls\n git_cred_userpass_plaintext_new unless the protocol has not specified\n <code>GIT_CREDTYPE_USERPASS_PLAINTEXT</code> as an allowed type.</p>\n","comments":"","group":"cred"},"git_describe_commit":{"type":"function","file":"describe.h","line":123,"lineto":126,"args":[{"name":"result","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"committish","type":"git_object *","comment":"a committish to describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **result, git_object *committish, git_describe_options *opts","sig":"git_describe_result **::git_object *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the given committish object.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.25.1/describe.html#git_describe_commit-1"]}},"git_describe_workdir":{"type":"function","file":"describe.h","line":140,"lineto":143,"args":[{"name":"out","type":"git_describe_result **","comment":"pointer to store the result. You must free this once\n you're done with it."},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the describe"},{"name":"opts","type":"git_describe_options *","comment":"the lookup options"}],"argline":"git_describe_result **out, git_repository *repo, git_describe_options *opts","sig":"git_describe_result **::git_repository *::git_describe_options *","return":{"type":"int","comment":null},"description":"<p>Describe a commit</p>\n","comments":"<p>Perform the describe operation on the current commit and the worktree. After peforming describe on HEAD, a status is run and the description is considered to be dirty if there are.</p>\n","group":"describe","examples":{"describe.c":["ex/v0.25.1/describe.html#git_describe_workdir-2"]}},"git_describe_format":{"type":"function","file":"describe.h","line":153,"lineto":156,"args":[{"name":"out","type":"git_buf *","comment":"The buffer to store the result"},{"name":"result","type":"const git_describe_result *","comment":"the result from `git_describe_commit()` or\n `git_describe_workdir()`."},{"name":"opts","type":"const git_describe_format_options *","comment":"the formatting options"}],"argline":"git_buf *out, const git_describe_result *result, const git_describe_format_options *opts","sig":"git_buf *::const git_describe_result *::const git_describe_format_options *","return":{"type":"int","comment":null},"description":"<p>Print the describe result to a buffer</p>\n","comments":"","group":"describe","examples":{"describe.c":["ex/v0.25.1/describe.html#git_describe_format-3"]}},"git_describe_result_free":{"type":"function","file":"describe.h","line":161,"lineto":161,"args":[{"name":"result","type":"git_describe_result *","comment":null}],"argline":"git_describe_result *result","sig":"git_describe_result *","return":{"type":"void","comment":null},"description":"<p>Free the describe result.</p>\n","comments":"","group":"describe"},"git_diff_init_options":{"type":"function","file":"diff.h","line":441,"lineto":443,"args":[{"name":"opts","type":"git_diff_options *","comment":"The `git_diff_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_OPTIONS_VERSION`"}],"argline":"git_diff_options *opts, unsigned int version","sig":"git_diff_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_find_init_options":{"type":"function","file":"diff.h","line":736,"lineto":738,"args":[{"name":"opts","type":"git_diff_find_options *","comment":"The `git_diff_find_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FIND_OPTIONS_VERSION`"}],"argline":"git_diff_find_options *opts, unsigned int version","sig":"git_diff_find_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_find_options</code> with default values. Equivalent to\n creating an instance with GIT_DIFF_FIND_OPTIONS_INIT.</p>\n","comments":"","group":"diff"},"git_diff_free":{"type":"function","file":"diff.h","line":752,"lineto":752,"args":[{"name":"diff","type":"git_diff *","comment":"The previously created diff; cannot be used after free."}],"argline":"git_diff *diff","sig":"git_diff *","return":{"type":"void","comment":null},"description":"<p>Deallocate a diff.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_free-2"],"log.c":["ex/v0.25.1/log.html#git_diff_free-24","ex/v0.25.1/log.html#git_diff_free-25"]}},"git_diff_tree_to_tree":{"type":"function","file":"diff.h","line":770,"lineto":775,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the trees."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"new_tree","type":"git_tree *","comment":"A git_tree object to diff to, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_tree *new_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two tree objects.</p>\n","comments":"<p>This is equivalent to <code>git diff &lt;old-tree&gt; &lt;new-tree&gt;</code></p>\n\n<p>The first tree will be used for the &quot;old_file&quot; side of the delta and the second tree will be used for the &quot;new_file&quot; side of the delta.  You can pass NULL to indicate an empty tree, although it is an error to pass NULL for both the <code>old_tree</code> and <code>new_tree</code>.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_tree_to_tree-3"],"log.c":["ex/v0.25.1/log.html#git_diff_tree_to_tree-26","ex/v0.25.1/log.html#git_diff_tree_to_tree-27"]}},"git_diff_tree_to_index":{"type":"function","file":"diff.h","line":796,"lineto":801,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree and index."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"index","type":"git_index *","comment":"The index to diff with; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and repository index.</p>\n","comments":"<p>This is equivalent to <code>git diff --cached &lt;treeish&gt;</code> or if you pass the HEAD tree, then like <code>git diff --cached</code>.</p>\n\n<p>The tree you pass will be used for the &quot;old_file&quot; side of the delta, and the index will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_tree_to_index-4"]}},"git_diff_index_to_workdir":{"type":"function","file":"diff.h","line":823,"lineto":827,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository."},{"name":"index","type":"git_index *","comment":"The index to diff from; repo index used if NULL."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between the repository index and the workdir directory.</p>\n","comments":"<p>This matches the <code>git diff</code> command.  See the note below on <code>git_diff_tree_to_workdir</code> for a discussion of the difference between <code>git diff</code> and <code>git diff HEAD</code> and how to emulate a <code>git diff &lt;treeish&gt;</code> using libgit2.</p>\n\n<p>The index will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side of the delta.</p>\n\n<p>If you pass NULL for the index, then the existing index of the <code>repo</code> will be used.  In this case, the index will be refreshed from disk (if it has changed) before the diff is generated.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_index_to_workdir-5"]}},"git_diff_tree_to_workdir":{"type":"function","file":"diff.h","line":852,"lineto":856,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory.</p>\n","comments":"<p>The tree you provide will be used for the &quot;old_file&quot; side of the delta, and the working directory will be used for the &quot;new_file&quot; side.</p>\n\n<p>This is not the same as <code>git diff &lt;treeish&gt;</code> or <code>git diff-index &lt;treeish&gt;</code>.  Those commands use information from the index, whereas this function strictly returns the differences between the tree and the files in the working directory, regardless of the state of the index.  Use <code>git_diff_tree_to_workdir_with_index</code> to emulate those commands.</p>\n\n<p>To see difference between this and <code>git_diff_tree_to_workdir_with_index</code>, consider the example of a staged file deletion where the file has then been put back into the working dir and further modified.  The tree-to-workdir diff for that file is &#39;modified&#39;, but <code>git diff</code> would show status &#39;deleted&#39; since there is a staged delete.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_tree_to_workdir-6"]}},"git_diff_tree_to_workdir_with_index":{"type":"function","file":"diff.h","line":871,"lineto":875,"args":[{"name":"diff","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the tree."},{"name":"old_tree","type":"git_tree *","comment":"A git_tree object to diff from, or NULL for empty tree."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_tree *old_tree, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_tree *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff between a tree and the working directory using index data\n to account for staged deletes, tracked files, etc.</p>\n","comments":"<p>This emulates <code>git diff &lt;tree&gt;</code> by diffing the tree to the index and the index to the working directory and blending the results into a single diff that includes staged deleted, etc.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_tree_to_workdir_with_index-7"]}},"git_diff_index_to_index":{"type":"function","file":"diff.h","line":889,"lineto":894,"args":[{"name":"diff","type":"git_diff **","comment":"Output pointer to a git_diff pointer to be allocated."},{"name":"repo","type":"git_repository *","comment":"The repository containing the indexes."},{"name":"old_index","type":"git_index *","comment":"A git_index object to diff from."},{"name":"new_index","type":"git_index *","comment":"A git_index object to diff to."},{"name":"opts","type":"const git_diff_options *","comment":"Structure with options to influence diff or NULL for defaults."}],"argline":"git_diff **diff, git_repository *repo, git_index *old_index, git_index *new_index, const git_diff_options *opts","sig":"git_diff **::git_repository *::git_index *::git_index *::const git_diff_options *","return":{"type":"int","comment":null},"description":"<p>Create a diff with the difference between two index objects.</p>\n","comments":"<p>The first index will be used for the &quot;old_file&quot; side of the delta and the second index will be used for the &quot;new_file&quot; side of the delta.</p>\n","group":"diff"},"git_diff_merge":{"type":"function","file":"diff.h","line":909,"lineto":911,"args":[{"name":"onto","type":"git_diff *","comment":"Diff to merge into."},{"name":"from","type":"const git_diff *","comment":"Diff to merge."}],"argline":"git_diff *onto, const git_diff *from","sig":"git_diff *::const git_diff *","return":{"type":"int","comment":null},"description":"<p>Merge one diff into another.</p>\n","comments":"<p>This merges items from the &quot;from&quot; list into the &quot;onto&quot; list.  The resulting diff will have all items that appear in either list. If an item appears in both lists, then it will be &quot;merged&quot; to appear as if the old version was from the &quot;onto&quot; list and the new version is from the &quot;from&quot; list (with the exception that if the item has a pending DELETE in the middle, then it will show as deleted).</p>\n","group":"diff"},"git_diff_find_similar":{"type":"function","file":"diff.h","line":925,"lineto":927,"args":[{"name":"diff","type":"git_diff *","comment":"diff to run detection algorithms on"},{"name":"options","type":"const git_diff_find_options *","comment":"Control how detection should be run, NULL for defaults"}],"argline":"git_diff *diff, const git_diff_find_options *options","sig":"git_diff *::const git_diff_find_options *","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Transform a diff marking file renames, copies, etc.</p>\n","comments":"<p>This modifies a diff in place, replacing old entries that look like renames or copies with new entries reflecting those changes. This also will, if requested, break modified files into add/remove pairs if the amount of change is above a threshold.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_find_similar-8"]}},"git_diff_num_deltas":{"type":"function","file":"diff.h","line":945,"lineto":945,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"size_t","comment":" Count of number of deltas in the list"},"description":"<p>Query how many diff records are there in a diff.</p>\n","comments":"","group":"diff","examples":{"log.c":["ex/v0.25.1/log.html#git_diff_num_deltas-28"]}},"git_diff_num_deltas_of_type":{"type":"function","file":"diff.h","line":958,"lineto":959,"args":[{"name":"diff","type":"const git_diff *","comment":"A git_diff generated by one of the above functions"},{"name":"type","type":"git_delta_t","comment":"A git_delta_t value to filter the count"}],"argline":"const git_diff *diff, git_delta_t type","sig":"const git_diff *::git_delta_t","return":{"type":"size_t","comment":" Count of number of deltas matching delta_t type"},"description":"<p>Query how many diff deltas are there in a diff filtered by type.</p>\n","comments":"<p>This works just like <code>git_diff_entrycount()</code> with an extra parameter that is a <code>git_delta_t</code> and returns just the count of how many deltas match that particular type.</p>\n","group":"diff"},"git_diff_get_delta":{"type":"function","file":"diff.h","line":978,"lineto":979,"args":[{"name":"diff","type":"const git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"const git_diff *diff, size_t idx","sig":"const git_diff *::size_t","return":{"type":"const git_diff_delta *","comment":" Pointer to git_diff_delta (or NULL if `idx` out of range)"},"description":"<p>Return the diff delta for an entry in the diff list.</p>\n","comments":"<p>The <code>git_diff_delta</code> pointer points to internal data and you do not have to release it when you are done with it.  It will go away when the * <code>git_diff</code> (or any associated <code>git_patch</code>) goes away.</p>\n\n<p>Note that the flags on the delta related to whether it has binary content or not may not be set if there are no attributes set for the file and there has been no reason to load the file data at this point. For now, if you need those flags to be up to date, your only option is to either use <code>git_diff_foreach</code> or create a <code>git_patch</code>.</p>\n","group":"diff"},"git_diff_is_sorted_icase":{"type":"function","file":"diff.h","line":987,"lineto":987,"args":[{"name":"diff","type":"const git_diff *","comment":"diff to check"}],"argline":"const git_diff *diff","sig":"const git_diff *","return":{"type":"int","comment":" 0 if case sensitive, 1 if case is ignored"},"description":"<p>Check if deltas are sorted case sensitively or insensitively.</p>\n","comments":"","group":"diff"},"git_diff_foreach":{"type":"function","file":"diff.h","line":1015,"lineto":1021,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback function to make per file in the diff."},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Optional callback to make for binary files."},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Optional callback to make per hunk of text diff.  This\n                callback is called to describe a range of lines in the\n                diff.  It will not be issued for binary files."},{"name":"line_cb","type":"git_diff_line_cb","comment":"Optional callback to make per line of diff text.  This\n                same callback will be made for context lines, added, and\n                removed lines, and even for a deleted trailing newline."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_diff *diff, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"git_diff *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all deltas in a diff issuing callbacks.</p>\n","comments":"<p>This will iterate through all of the files described in a diff.  You should provide a file callback to learn about each file.</p>\n\n<p>The &quot;hunk&quot; and &quot;line&quot; callbacks are optional, and the text diff of the files will only be calculated if they are not NULL.  Of course, these callbacks will not be invoked for binary files on the diff or for files whose only changed is a file mode change.</p>\n\n<p>Returning a non-zero value from any of the callbacks will terminate the iteration and return the value to the user.</p>\n","group":"diff"},"git_diff_status_char":{"type":"function","file":"diff.h","line":1034,"lineto":1034,"args":[{"name":"status","type":"git_delta_t","comment":"The git_delta_t value to look up"}],"argline":"git_delta_t status","sig":"git_delta_t","return":{"type":"char","comment":" The single character label for that code"},"description":"<p>Look up the single character abbreviation for a delta status code.</p>\n","comments":"<p>When you run <code>git diff --name-status</code> it uses single letter codes in the output such as &#39;A&#39; for added, &#39;D&#39; for deleted, &#39;M&#39; for modified, etc.  This function converts a git_delta_t value into these letters for your own purposes.  GIT_DELTA_UNTRACKED will return a space (i.e. &#39; &#39;).</p>\n","group":"diff"},"git_diff_print":{"type":"function","file":"diff.h","line":1059,"lineto":1063,"args":[{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback to make per line of diff text."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callback."}],"argline":"git_diff *diff, git_diff_format_t format, git_diff_line_cb print_cb, void *payload","sig":"git_diff *::git_diff_format_t::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Iterate over a diff generating formatted text output.</p>\n","comments":"<p>Returning a non-zero value from the callbacks will terminate the iteration and return the non-zero value to the caller.</p>\n","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_print-9"],"log.c":["ex/v0.25.1/log.html#git_diff_print-29"]}},"git_diff_to_buf":{"type":"function","file":"diff.h","line":1075,"lineto":1078,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf that will\n            contain the diff text"},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."},{"name":"format","type":"git_diff_format_t","comment":"A git_diff_format_t value to pick the text format."}],"argline":"git_buf *out, git_diff *diff, git_diff_format_t format","sig":"git_buf *::git_diff *::git_diff_format_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Produce the complete formatted text output from a diff into a\n buffer.</p>\n","comments":"","group":"diff"},"git_diff_blobs":{"type":"function","file":"diff.h","line":1115,"lineto":1125,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff on two blobs.</p>\n","comments":"<p>Compared to a file, a blob lacks some contextual information. As such, the <code>git_diff_file</code> given to the callback will have some fake data; i.e. <code>mode</code> will be 0 and <code>path</code> will be NULL.</p>\n\n<p>NULL is allowed for either <code>old_blob</code> or <code>new_blob</code> and will be treated as an empty blob, with the <code>oid</code> set to NULL in the <code>git_diff_file</code> data. Passing NULL for both blobs is a noop; no callbacks will be made at all.</p>\n\n<p>We do run a binary content check on the blob content and if either blob looks like binary data, the <code>git_diff_delta</code> binary attribute will be set to 1 and no call to the hunk_cb nor line_cb will be made (unless you pass <code>GIT_DIFF_FORCE_TEXT</code> of course).</p>\n","group":"diff"},"git_diff_blob_to_buffer":{"type":"function","file":"diff.h","line":1152,"lineto":1163,"args":[{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between a blob and a buffer.</p>\n","comments":"<p>As with <code>git_diff_blobs</code>, comparing a blob and buffer lacks some context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n\n<p>Passing NULL for <code>old_blob</code> will be treated as an empty blob (i.e. the <code>file_cb</code> will be invoked with GIT_DELTA_ADDED and the diff will be the entire content of the buffer added).  Passing NULL to the buffer will do the reverse, with GIT_DELTA_REMOVED and blob content removed.</p>\n","group":"diff"},"git_diff_buffers":{"type":"function","file":"diff.h","line":1186,"lineto":1198,"args":[{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const void *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"options","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"},{"name":"file_cb","type":"git_diff_file_cb","comment":"Callback for \"file\"; made once if there is a diff; can be NULL"},{"name":"binary_cb","type":"git_diff_binary_cb","comment":"Callback for binary files; can be NULL"},{"name":"hunk_cb","type":"git_diff_hunk_cb","comment":"Callback for each hunk in diff; can be NULL"},{"name":"line_cb","type":"git_diff_line_cb","comment":"Callback for each line in diff; can be NULL"},{"name":"payload","type":"void *","comment":"Payload passed to each callback function"}],"argline":"const void *old_buffer, size_t old_len, const char *old_as_path, const void *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *options, git_diff_file_cb file_cb, git_diff_binary_cb binary_cb, git_diff_hunk_cb hunk_cb, git_diff_line_cb line_cb, void *payload","sig":"const void *::size_t::const char *::const void *::size_t::const char *::const git_diff_options *::git_diff_file_cb::git_diff_binary_cb::git_diff_hunk_cb::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Directly run a diff between two buffers.</p>\n","comments":"<p>Even more than with <code>git_diff_blobs</code>, comparing two buffer lacks context, so the <code>git_diff_file</code> parameters to the callbacks will be faked a la the rules for <code>git_diff_blobs()</code>.</p>\n","group":"diff"},"git_diff_from_buffer":{"type":"function","file":"diff.h","line":1219,"lineto":1222,"args":[{"name":"out","type":"git_diff **","comment":"A pointer to a git_diff pointer that will be allocated."},{"name":"content","type":"const char *","comment":"The contents of a patch file"},{"name":"content_len","type":"size_t","comment":"The length of the patch file contents"}],"argline":"git_diff **out, const char *content, size_t content_len","sig":"git_diff **::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the contents of a git patch file into a <code>git_diff</code> object.</p>\n","comments":"<p>The diff object produced is similar to the one that would be produced if you actually produced it computationally by comparing two trees, however there may be subtle differences.  For example, a patch file likely contains abbreviated object IDs, so the object IDs in a <code>git_diff_delta</code> produced by this function will also be abbreviated.</p>\n\n<p>This function will only read patch files created by a git implementation, it will not read unified diffs produced by the <code>diff</code> program, nor any other types of patch files.</p>\n","group":"diff"},"git_diff_get_stats":{"type":"function","file":"diff.h","line":1258,"lineto":1260,"args":[{"name":"out","type":"git_diff_stats **","comment":"Structure containg the diff statistics."},{"name":"diff","type":"git_diff *","comment":"A git_diff generated by one of the above functions."}],"argline":"git_diff_stats **out, git_diff *diff","sig":"git_diff_stats **::git_diff *","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Accumulate diff statistics for all patches.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_get_stats-10"]}},"git_diff_stats_files_changed":{"type":"function","file":"diff.h","line":1268,"lineto":1269,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of files changed in the diff"},"description":"<p>Get the total number of files changed in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_insertions":{"type":"function","file":"diff.h","line":1277,"lineto":1278,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of insertions in the diff"},"description":"<p>Get the total number of insertions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_deletions":{"type":"function","file":"diff.h","line":1286,"lineto":1287,"args":[{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."}],"argline":"const git_diff_stats *stats","sig":"const git_diff_stats *","return":{"type":"size_t","comment":" total number of deletions in the diff"},"description":"<p>Get the total number of deletions in a diff</p>\n","comments":"","group":"diff"},"git_diff_stats_to_buf":{"type":"function","file":"diff.h","line":1298,"lineto":1302,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the formatted diff statistics in."},{"name":"stats","type":"const git_diff_stats *","comment":"A `git_diff_stats` generated by one of the above functions."},{"name":"format","type":"git_diff_stats_format_t","comment":"Formatting option."},{"name":"width","type":"size_t","comment":"Target width for output (only affects GIT_DIFF_STATS_FULL)"}],"argline":"git_buf *out, const git_diff_stats *stats, git_diff_stats_format_t format, size_t width","sig":"git_buf *::const git_diff_stats *::git_diff_stats_format_t::size_t","return":{"type":"int","comment":" 0 on success; non-zero on error"},"description":"<p>Print diff statistics to a <code>git_buf</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_stats_to_buf-11"]}},"git_diff_stats_free":{"type":"function","file":"diff.h","line":1310,"lineto":1310,"args":[{"name":"stats","type":"git_diff_stats *","comment":"The previously created statistics object;\n cannot be used after free."}],"argline":"git_diff_stats *stats","sig":"git_diff_stats *","return":{"type":"void","comment":null},"description":"<p>Deallocate a <code>git_diff_stats</code>.</p>\n","comments":"","group":"diff","examples":{"diff.c":["ex/v0.25.1/diff.html#git_diff_stats_free-12"]}},"git_diff_format_email":{"type":"function","file":"diff.h","line":1362,"lineto":1365,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"diff","type":"git_diff *","comment":"containing the commit"},{"name":"opts","type":"const git_diff_format_email_options *","comment":"structure with options to influence content and formatting."}],"argline":"git_buf *out, git_diff *diff, const git_diff_format_email_options *opts","sig":"git_buf *::git_diff *::const git_diff_format_email_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch from a diff.</p>\n","comments":"","group":"diff"},"git_diff_commit_as_email":{"type":"function","file":"diff.h","line":1381,"lineto":1388,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the e-mail patch in"},{"name":"repo","type":"git_repository *","comment":"containing the commit"},{"name":"commit","type":"git_commit *","comment":"pointer to up commit"},{"name":"patch_no","type":"size_t","comment":"patch number of the commit"},{"name":"total_patches","type":"size_t","comment":"total number of patches in the patch set"},{"name":"flags","type":"git_diff_format_email_flags_t","comment":"determines the formatting of the e-mail"},{"name":"diff_opts","type":"const git_diff_options *","comment":"structure with options to influence diff or NULL for defaults."}],"argline":"git_buf *out, git_repository *repo, git_commit *commit, size_t patch_no, size_t total_patches, git_diff_format_email_flags_t flags, const git_diff_options *diff_opts","sig":"git_buf *::git_repository *::git_commit *::size_t::size_t::git_diff_format_email_flags_t::const git_diff_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an e-mail ready patch for a commit.</p>\n","comments":"<p>Does not support creating patches for merge commits (yet).</p>\n","group":"diff"},"git_diff_format_email_init_options":{"type":"function","file":"diff.h","line":1399,"lineto":1401,"args":[{"name":"opts","type":"git_diff_format_email_options *","comment":"The `git_diff_format_email_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_DIFF_FORMAT_EMAIL_OPTIONS_VERSION`"}],"argline":"git_diff_format_email_options *opts, unsigned int version","sig":"git_diff_format_email_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_diff_format_email_options</code> with default values.</p>\n","comments":"<p>Equivalent to creating an instance with GIT_DIFF_FORMAT_EMAIL_OPTIONS_INIT.</p>\n","group":"diff"},"giterr_last":{"type":"function","file":"errors.h","line":111,"lineto":111,"args":[],"argline":"","sig":"","return":{"type":"const git_error *","comment":" A git_error object."},"description":"<p>Return the last <code>git_error</code> object that was generated for the\n current thread or NULL if no error has occurred.</p>\n","comments":"","group":"giterr","examples":{"general.c":["ex/v0.25.1/general.html#giterr_last-27"],"network/clone.c":["ex/v0.25.1/network/clone.html#giterr_last-2"],"network/git2.c":["ex/v0.25.1/network/git2.html#giterr_last-1","ex/v0.25.1/network/git2.html#giterr_last-2"]}},"giterr_clear":{"type":"function","file":"errors.h","line":116,"lineto":116,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Clear the last library error that occurred for this thread.</p>\n","comments":"","group":"giterr"},"giterr_set_str":{"type":"function","file":"errors.h","line":134,"lineto":134,"args":[{"name":"error_class","type":"int","comment":"One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error."},{"name":"string","type":"const char *","comment":"The formatted error message to keep"}],"argline":"int error_class, const char *string","sig":"int::const char *","return":{"type":"void","comment":null},"description":"<p>Set the error message string for this thread.</p>\n","comments":"<p>This function is public so that custom ODB backends and the like can relay an error message through libgit2.  Most regular users of libgit2 will never need to call this function -- actually, calling it in most circumstances (for example, calling from within a callback function) will just end up having the value overwritten by libgit2 internals.</p>\n\n<p>This error message is stored in thread-local storage and only applies to the particular thread that this libgit2 call is made from.</p>\n","group":"giterr"},"giterr_set_oom":{"type":"function","file":"errors.h","line":145,"lineto":145,"args":[],"argline":"","sig":"","return":{"type":"void","comment":null},"description":"<p>Set the error message to a special value for memory allocation failure.</p>\n","comments":"<p>The normal <code>giterr_set_str()</code> function attempts to <code>strdup()</code> the string that is passed in.  This is not a good idea when the error in question is a memory allocation failure.  That circumstance has a special setter function that sets the error string to a known and statically allocated internal value.</p>\n","group":"giterr"},"git_filter_list_load":{"type":"function","file":"filter.h","line":90,"lineto":96,"args":[{"name":"filters","type":"git_filter_list **","comment":"Output newly created git_filter_list (or NULL)"},{"name":"repo","type":"git_repository *","comment":"Repository object that contains `path`"},{"name":"blob","type":"git_blob *","comment":"The blob to which the filter will be applied (if known)"},{"name":"path","type":"const char *","comment":"Relative path of the file to be filtered"},{"name":"mode","type":"git_filter_mode_t","comment":"Filtering direction (WT->ODB or ODB->WT)"},{"name":"flags","type":"uint32_t","comment":"Combination of `git_filter_flag_t` flags"}],"argline":"git_filter_list **filters, git_repository *repo, git_blob *blob, const char *path, git_filter_mode_t mode, uint32_t flags","sig":"git_filter_list **::git_repository *::git_blob *::const char *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":" 0 on success (which could still return NULL if no filters are\n         needed for the requested file), \n<\n0 on error"},"description":"<p>Load the filter list for a given path.</p>\n","comments":"<p>This will return 0 (success) but set the output git_filter_list to NULL if no filters are requested for the given file.</p>\n","group":"filter"},"git_filter_list_contains":{"type":"function","file":"filter.h","line":110,"lineto":112,"args":[{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"name","type":"const char *","comment":"The name of the filter to query"}],"argline":"git_filter_list *filters, const char *name","sig":"git_filter_list *::const char *","return":{"type":"int","comment":" 1 if the filter is in the list, 0 otherwise"},"description":"<p>Query the filter list to see if a given filter (by name) will run.\n The built-in filters &quot;crlf&quot; and &quot;ident&quot; can be queried, otherwise this\n is the name of the filter specified by the filter attribute.</p>\n","comments":"<p>This will return 0 if the given filter is not in the list, or 1 if the filter will be applied.</p>\n","group":"filter"},"git_filter_list_apply_to_data":{"type":"function","file":"filter.h","line":134,"lineto":137,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to store the result of the filtering"},{"name":"filters","type":"git_filter_list *","comment":"A loaded git_filter_list (or NULL)"},{"name":"in","type":"git_buf *","comment":"Buffer containing the data to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_buf *in","sig":"git_buf *::git_filter_list *::git_buf *","return":{"type":"int","comment":" 0 on success, an error code otherwise"},"description":"<p>Apply filter list to a data buffer.</p>\n","comments":"<p>See <code>git2/buffer.h</code> for background on <code>git_buf</code> objects.</p>\n\n<p>If the <code>in</code> buffer holds data allocated by libgit2 (i.e. <code>in-&gt;asize</code> is not zero), then it will be overwritten when applying the filters.  If not, then it will be left untouched.</p>\n\n<p>If there are no filters to apply (or <code>filters</code> is NULL), then the <code>out</code> buffer will reference the <code>in</code> buffer data (with <code>asize</code> set to zero) instead of allocating data.  This keeps allocations to a minimum, but it means you have to be careful about freeing the <code>in</code> data since <code>out</code> may be pointing to it!</p>\n","group":"filter"},"git_filter_list_apply_to_file":{"type":"function","file":"filter.h","line":148,"lineto":152,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"}],"argline":"git_buf *out, git_filter_list *filters, git_repository *repo, const char *path","sig":"git_buf *::git_filter_list *::git_repository *::const char *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a file on disk</p>\n","comments":"","group":"filter"},"git_filter_list_apply_to_blob":{"type":"function","file":"filter.h","line":161,"lineto":164,"args":[{"name":"out","type":"git_buf *","comment":"buffer into which to store the filtered file"},{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"}],"argline":"git_buf *out, git_filter_list *filters, git_blob *blob","sig":"git_buf *::git_filter_list *::git_blob *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to the contents of a blob</p>\n","comments":"","group":"filter"},"git_filter_list_stream_data":{"type":"function","file":"filter.h","line":173,"lineto":176,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"data","type":"git_buf *","comment":"the buffer to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_buf *data, git_writestream *target","sig":"git_filter_list *::git_buf *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to an arbitrary buffer as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_file":{"type":"function","file":"filter.h","line":187,"lineto":191,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the filtering"},{"name":"path","type":"const char *","comment":"the path of the file to filter, a relative path will be\n taken as relative to the workdir"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_repository *repo, const char *path, git_writestream *target","sig":"git_filter_list *::git_repository *::const char *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a file as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_stream_blob":{"type":"function","file":"filter.h","line":200,"lineto":203,"args":[{"name":"filters","type":"git_filter_list *","comment":"the list of filters to apply"},{"name":"blob","type":"git_blob *","comment":"the blob to filter"},{"name":"target","type":"git_writestream *","comment":"the stream into which the data will be written"}],"argline":"git_filter_list *filters, git_blob *blob, git_writestream *target","sig":"git_filter_list *::git_blob *::git_writestream *","return":{"type":"int","comment":null},"description":"<p>Apply a filter list to a blob as a stream</p>\n","comments":"","group":"filter"},"git_filter_list_free":{"type":"function","file":"filter.h","line":210,"lineto":210,"args":[{"name":"filters","type":"git_filter_list *","comment":"A git_filter_list created by `git_filter_list_load`"}],"argline":"git_filter_list *filters","sig":"git_filter_list *","return":{"type":"void","comment":null},"description":"<p>Free a git_filter_list</p>\n","comments":"","group":"filter"},"git_libgit2_init":{"type":"function","file":"global.h","line":26,"lineto":26,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of initializations of the library, or an error code."},"description":"<p>Init the global state</p>\n","comments":"<p>This function must the called before any other libgit2 function in order to set up global state and threading.</p>\n\n<p>This function may be called multiple times - it will return the number of times the initialization has been called (including this one) that have not subsequently been shutdown.</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.25.1/blame.html#git_libgit2_init-8"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_libgit2_init-10"],"describe.c":["ex/v0.25.1/describe.html#git_libgit2_init-4"],"diff.c":["ex/v0.25.1/diff.html#git_libgit2_init-13"],"general.c":["ex/v0.25.1/general.html#git_libgit2_init-28"],"init.c":["ex/v0.25.1/init.html#git_libgit2_init-2"],"log.c":["ex/v0.25.1/log.html#git_libgit2_init-30"],"network/git2.c":["ex/v0.25.1/network/git2.html#git_libgit2_init-3"],"remote.c":["ex/v0.25.1/remote.html#git_libgit2_init-2"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_libgit2_init-1"],"status.c":["ex/v0.25.1/status.html#git_libgit2_init-1"],"tag.c":["ex/v0.25.1/tag.html#git_libgit2_init-3"]}},"git_libgit2_shutdown":{"type":"function","file":"global.h","line":39,"lineto":39,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" the number of remaining initializations of the library, or an\n error code."},"description":"<p>Shutdown the global state</p>\n","comments":"<p>Clean up the global state and threading context after calling it as many times as <code>git_libgit2_init()</code> was called - it will return the number of remainining initializations that have not been shutdown (after this one).</p>\n","group":"libgit2","examples":{"blame.c":["ex/v0.25.1/blame.html#git_libgit2_shutdown-9"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_libgit2_shutdown-11"],"describe.c":["ex/v0.25.1/describe.html#git_libgit2_shutdown-5"],"diff.c":["ex/v0.25.1/diff.html#git_libgit2_shutdown-14"],"init.c":["ex/v0.25.1/init.html#git_libgit2_shutdown-3"],"log.c":["ex/v0.25.1/log.html#git_libgit2_shutdown-31"],"network/git2.c":["ex/v0.25.1/network/git2.html#git_libgit2_shutdown-4"],"remote.c":["ex/v0.25.1/remote.html#git_libgit2_shutdown-3"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_libgit2_shutdown-2"],"status.c":["ex/v0.25.1/status.html#git_libgit2_shutdown-2"],"tag.c":["ex/v0.25.1/tag.html#git_libgit2_shutdown-4"]}},"git_graph_ahead_behind":{"type":"function","file":"graph.h","line":37,"lineto":37,"args":[{"name":"ahead","type":"size_t *","comment":"number of unique from commits in `upstream`"},{"name":"behind","type":"size_t *","comment":"number of unique from commits in `local`"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"local","type":"const git_oid *","comment":"the commit for local"},{"name":"upstream","type":"const git_oid *","comment":"the commit for upstream"}],"argline":"size_t *ahead, size_t *behind, git_repository *repo, const git_oid *local, const git_oid *upstream","sig":"size_t *::size_t *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":null},"description":"<p>Count the number of unique commits between two commit objects</p>\n","comments":"<p>There is no need for branches containing the commits to have any upstream relationship, but it helps to think of one as a branch and the other as its upstream, the <code>ahead</code> and <code>behind</code> values will be what git would report for the branches.</p>\n","group":"graph"},"git_graph_descendant_of":{"type":"function","file":"graph.h","line":48,"lineto":51,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"const git_oid *","comment":"a previously loaded commit."},{"name":"ancestor","type":"const git_oid *","comment":"a potential ancestor commit."}],"argline":"git_repository *repo, const git_oid *commit, const git_oid *ancestor","sig":"git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise."},"description":"<p>Determine if a commit is the descendant of another commit.</p>\n","comments":"","group":"graph"},"git_ignore_add_rule":{"type":"function","file":"ignore.h","line":37,"lineto":39,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to add ignore rules to."},{"name":"rules","type":"const char *","comment":"Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline."}],"argline":"git_repository *repo, const char *rules","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Add ignore rules for a repository.</p>\n","comments":"<p>Excludesfile rules (i.e. .gitignore rules) are generally read from .gitignore files in the repository tree or from a shared system file only if a &quot;core.excludesfile&quot; config value is set.  The library also keeps a set of per-repository internal ignores that can be configured in-memory and will not persist.  This function allows you to add to that internal rules list.</p>\n\n<p>Example usage:</p>\n\n<pre><code> error = git_ignore_add_rule(myrepo, &quot;*.c/ with space&quot;);\n</code></pre>\n\n<p>This would add three rules to the ignores.</p>\n","group":"ignore"},"git_ignore_clear_internal_rules":{"type":"function","file":"ignore.h","line":52,"lineto":53,"args":[{"name":"repo","type":"git_repository *","comment":"The repository to remove ignore rules from."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success"},"description":"<p>Clear ignore rules that were explicitly added.</p>\n","comments":"<p>Resets to the default internal ignore rules.  This will not turn off rules in .gitignore files that actually exist in the filesystem.</p>\n\n<p>The default internal ignores ignore &quot;.&quot;, &quot;..&quot; and &quot;.git&quot; entries.</p>\n","group":"ignore"},"git_ignore_path_is_ignored":{"type":"function","file":"ignore.h","line":71,"lineto":74,"args":[{"name":"ignored","type":"int *","comment":"boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"a repository object"},{"name":"path","type":"const char *","comment":"the file to check ignores for, relative to the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given path.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"ignore"},"git_index_open":{"type":"function","file":"index.h","line":203,"lineto":203,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"},{"name":"index_path","type":"const char *","comment":"the path to the index file in disk"}],"argline":"git_index **out, const char *index_path","sig":"git_index **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new bare Git index object as a memory representation\n of the Git index file in &#39;index_path&#39;, without a repository\n to back it.</p>\n","comments":"<p>Since there is no ODB or working directory behind this index, any Index methods which rely on these (e.g. index_add_bypath) will fail with the GIT_ERROR error code.</p>\n\n<p>If you need to access the index of an actual repository, use the <code>git_repository_index</code> wrapper.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_new":{"type":"function","file":"index.h","line":216,"lineto":216,"args":[{"name":"out","type":"git_index **","comment":"the pointer for the new index"}],"argline":"git_index **out","sig":"git_index **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an in-memory index object.</p>\n","comments":"<p>This index object cannot be read/written to the filesystem, but may be used to perform in-memory index operations.</p>\n\n<p>The index must be freed once it&#39;s no longer in use.</p>\n","group":"index"},"git_index_free":{"type":"function","file":"index.h","line":223,"lineto":223,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"void","comment":null},"description":"<p>Free an existing index object.</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.25.1/general.html#git_index_free-29"],"init.c":["ex/v0.25.1/init.html#git_index_free-4"]}},"git_index_owner":{"type":"function","file":"index.h","line":231,"lineto":231,"args":[{"name":"index","type":"const git_index *","comment":"The index"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"git_repository *","comment":" A pointer to the repository"},"description":"<p>Get the repository this index relates to</p>\n","comments":"","group":"index"},"git_index_caps":{"type":"function","file":"index.h","line":239,"lineto":239,"args":[{"name":"index","type":"const git_index *","comment":"An existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" A combination of GIT_INDEXCAP values"},"description":"<p>Read index capabilities flags.</p>\n","comments":"","group":"index"},"git_index_set_caps":{"type":"function","file":"index.h","line":252,"lineto":252,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"caps","type":"int","comment":"A combination of GIT_INDEXCAP values"}],"argline":"git_index *index, int caps","sig":"git_index *::int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index capabilities flags.</p>\n","comments":"<p>If you pass <code>GIT_INDEXCAP_FROM_OWNER</code> for the caps, then the capabilities will be read from the config of the owner object, looking at <code>core.ignorecase</code>, <code>core.filemode</code>, <code>core.symlinks</code>.</p>\n","group":"index"},"git_index_version":{"type":"function","file":"index.h","line":264,"lineto":264,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"unsigned int","comment":" the index version"},"description":"<p>Get index on-disk version.</p>\n","comments":"<p>Valid return values are 2, 3, or 4.  If 3 is returned, an index with version 2 may be written instead, if the extension data in version 3 is not necessary.</p>\n","group":"index"},"git_index_set_version":{"type":"function","file":"index.h","line":277,"lineto":277,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"version","type":"unsigned int","comment":"The new version number"}],"argline":"git_index *index, unsigned int version","sig":"git_index *::unsigned int","return":{"type":"int","comment":" 0 on success, -1 on failure"},"description":"<p>Set index on-disk version.</p>\n","comments":"<p>Valid values are 2, 3, or 4.  If 2 is given, git_index_write may write an index with version 3 instead, if necessary to accurately represent the index.</p>\n","group":"index"},"git_index_read":{"type":"function","file":"index.h","line":296,"lineto":296,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"force","type":"int","comment":"if true, always reload, vs. only read if file has changed"}],"argline":"git_index *index, int force","sig":"git_index *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the contents of an existing index object in memory by reading\n from the hard disk.</p>\n","comments":"<p>If <code>force</code> is true, this performs a &quot;hard&quot; read that discards in-memory changes and always reloads the on-disk index data.  If there is no on-disk version, the index will be cleared.</p>\n\n<p>If <code>force</code> is false, this does a &quot;soft&quot; read that reloads the index data from disk only if it has changed since the last time it was loaded.  Purely in-memory index data will be untouched.  Be aware: if there are changes on disk, unwritten in-memory changes are discarded.</p>\n","group":"index"},"git_index_write":{"type":"function","file":"index.h","line":305,"lineto":305,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing index object from memory back to disk\n using an atomic file lock.</p>\n","comments":"","group":"index"},"git_index_path":{"type":"function","file":"index.h","line":313,"lineto":313,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"const char *","comment":" path to index file or NULL for in-memory index"},"description":"<p>Get the full path to the index file on disk.</p>\n","comments":"","group":"index"},"git_index_checksum":{"type":"function","file":"index.h","line":325,"lineto":325,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"const git_oid *","comment":" a pointer to the checksum of the index"},"description":"<p>Get the checksum of the index</p>\n","comments":"<p>This checksum is the SHA-1 hash over the index file (except the last 20 bytes which are the checksum itself). In cases where the index does not exist on-disk, it will be zeroed out.</p>\n","group":"index"},"git_index_read_tree":{"type":"function","file":"index.h","line":336,"lineto":336,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"tree","type":"const git_tree *","comment":"tree to read"}],"argline":"git_index *index, const git_tree *tree","sig":"git_index *::const git_tree *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a tree into the index file with stats</p>\n","comments":"<p>The current index contents will be replaced by the specified tree.</p>\n","group":"index"},"git_index_write_tree":{"type":"function","file":"index.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the OID of the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"}],"argline":"git_oid *out, git_index *index","sig":"git_oid *::git_index *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree</p>\n","comments":"<p>This method will scan the index and write a representation of its current state back to disk; it recursively creates tree objects for each of the subtrees stored in the index, but only returns the OID of the root tree. This is the OID that can be used e.g. to create a commit.</p>\n\n<p>The index instance cannot be bare, and needs to be associated to an existing repository.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index","examples":{"init.c":["ex/v0.25.1/init.html#git_index_write_tree-5"]}},"git_index_write_tree_to":{"type":"function","file":"index.h","line":374,"lineto":374,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store OID of the the written tree"},{"name":"index","type":"git_index *","comment":"Index to write"},{"name":"repo","type":"git_repository *","comment":"Repository where to write the tree"}],"argline":"git_oid *out, git_index *index, git_repository *repo","sig":"git_oid *::git_index *::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code"},"description":"<p>Write the index as a tree to the given repository</p>\n","comments":"<p>This method will do the same as <code>git_index_write_tree</code>, but letting the user choose the repository where the tree will be written.</p>\n\n<p>The index must not contain any file in conflict.</p>\n","group":"index"},"git_index_entrycount":{"type":"function","file":"index.h","line":393,"lineto":393,"args":[{"name":"index","type":"const git_index *","comment":"an existing index object"}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"size_t","comment":" integer of count of current entries"},"description":"<p>Get the count of entries currently in the index</p>\n","comments":"","group":"index","examples":{"general.c":["ex/v0.25.1/general.html#git_index_entrycount-30"]}},"git_index_clear":{"type":"function","file":"index.h","line":404,"lineto":404,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 on success, error code \n<\n 0 on failure"},"description":"<p>Clear the contents (all the entries) of an index object.</p>\n","comments":"<p>This clears the index object in memory; changes must be explicitly written to disk for them to take effect persistently.</p>\n","group":"index"},"git_index_get_byindex":{"type":"function","file":"index.h","line":417,"lineto":418,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"n","type":"size_t","comment":"the position of the entry"}],"argline":"git_index *index, size_t n","sig":"git_index *::size_t","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index","examples":{"general.c":["ex/v0.25.1/general.html#git_index_get_byindex-31"]}},"git_index_get_bypath":{"type":"function","file":"index.h","line":432,"lineto":433,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"const git_index_entry *","comment":" a pointer to the entry; NULL if it was not found"},"description":"<p>Get a pointer to one of the entries in the index</p>\n","comments":"<p>The entry is not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_remove":{"type":"function","file":"index.h","line":443,"lineto":443,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *path, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an entry from the index</p>\n","comments":"","group":"index"},"git_index_remove_directory":{"type":"function","file":"index.h","line":453,"lineto":454,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"dir","type":"const char *","comment":"container directory path"},{"name":"stage","type":"int","comment":"stage to search"}],"argline":"git_index *index, const char *dir, int stage","sig":"git_index *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all entries from the index under a given directory</p>\n","comments":"","group":"index"},"git_index_add":{"type":"function","file":"index.h","line":470,"lineto":470,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"source_entry","type":"const git_index_entry *","comment":"new entry object"}],"argline":"git_index *index, const git_index_entry *source_entry","sig":"git_index *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from an in-memory struct</p>\n","comments":"<p>If a previous index entry exists that has the same path and stage as the given &#39;source_entry&#39;, it will be replaced.  Otherwise, the &#39;source_entry&#39; will be added.</p>\n\n<p>A full copy (including the &#39;path&#39; string) of the given &#39;source_entry&#39; will be inserted on the index.</p>\n","group":"index"},"git_index_entry_stage":{"type":"function","file":"index.h","line":482,"lineto":482,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" the stage number"},"description":"<p>Return the stage number from a git index entry</p>\n","comments":"<p>This entry is calculated from the entry&#39;s flag attribute like this:</p>\n\n<pre><code>(entry-&gt;flags &amp; GIT_IDXENTRY_STAGEMASK) &gt;&gt; GIT_IDXENTRY_STAGESHIFT\n</code></pre>\n","group":"index"},"git_index_entry_is_conflict":{"type":"function","file":"index.h","line":491,"lineto":491,"args":[{"name":"entry","type":"const git_index_entry *","comment":"The entry"}],"argline":"const git_index_entry *entry","sig":"const git_index_entry *","return":{"type":"int","comment":" 1 if the entry is a conflict entry, 0 otherwise"},"description":"<p>Return whether the given index entry is a conflict (has a high stage\n entry).  This is simply shorthand for <code>git_index_entry_stage &gt; 0</code>.</p>\n","comments":"","group":"index"},"git_index_add_bypath":{"type":"function","file":"index.h","line":522,"lineto":522,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to add"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder and must be readable.</p>\n\n<p>This method will fail in bare index instances.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_frombuffer":{"type":"function","file":"index.h","line":551,"lineto":554,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"entry","type":"const git_index_entry *","comment":"filename to add"},{"name":"buffer","type":"const void *","comment":"data to be written into the blob"},{"name":"len","type":"size_t","comment":"length of the data"}],"argline":"git_index *index, const git_index_entry *entry, const void *buffer, size_t len","sig":"git_index *::const git_index_entry *::const void *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an index entry from a buffer in memory</p>\n","comments":"<p>This method will create a blob in the repository that owns the index and then add the index entry to the index.  The <code>path</code> of the entry represents the position of the blob relative to the repository&#39;s root folder.</p>\n\n<p>If a previous index entry exists that has the same path as the given &#39;entry&#39;, it will be replaced.  Otherwise, the &#39;entry&#39; will be added. The <code>id</code> and the <code>file_size</code> of the &#39;entry&#39; are updated with the real value of the blob.</p>\n\n<p>This forces the file to be added to the index, not looking at gitignore rules.  Those rules can be evaluated through the git_status APIs (in status.h) before calling this.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_remove_bypath":{"type":"function","file":"index.h","line":570,"lineto":570,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"filename to remove"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove an index entry corresponding to a file on disk</p>\n","comments":"<p>The file <code>path</code> must be relative to the repository&#39;s working folder.  It may exist.</p>\n\n<p>If this file currently is the result of a merge conflict, this file will no longer be marked as conflicting.  The data about the conflict will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n","group":"index"},"git_index_add_all":{"type":"function","file":"index.h","line":617,"lineto":622,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"flags","type":"unsigned int","comment":"combination of git_index_add_option_t flags"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each added/updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, unsigned int flags, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::unsigned int::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Add or update index entries matching files in the working directory.</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>The <code>pathspec</code> is a list of file names or shell glob patterns that will matched against files in the repository&#39;s working directory.  Each file that matches will be added to the index (either updating an existing entry or adding a new entry).  You can disable glob expansion and force exact matching with the <code>GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH</code> flag.</p>\n\n<p>Files that are ignored will be skipped (unlike <code>git_index_add_bypath</code>). If a file is already tracked in the index, then it <em>will</em> be updated even if it is ignored.  Pass the <code>GIT_INDEX_ADD_FORCE</code> flag to skip the checking of ignore rules.</p>\n\n<p>To emulate <code>git add -A</code> and generate an error if the pathspec contains the exact path of an ignored file (when not using FORCE), add the <code>GIT_INDEX_ADD_CHECK_PATHSPEC</code> flag.  This checks that each entry in the <code>pathspec</code> that is an exact match to a filename on disk is either not ignored or already in the index.  If this check fails, the function will return GIT_EINVALIDSPEC.</p>\n\n<p>To emulate <code>git add -A</code> with the &quot;dry-run&quot; option, just use a callback function that always returns a positive value.  See below for details.</p>\n\n<p>If any files are currently the result of a merge conflict, those files will no longer be marked as conflicting.  The data about the conflicts will be moved to the &quot;resolve undo&quot; (REUC) section.</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the working directory immediately <em>before</em> it is added to / updated in the index.  Returning zero will add the item to the index, greater than zero will skip the item, and less than zero will abort the scan and return that value to the caller.</p>\n","group":"index"},"git_index_remove_all":{"type":"function","file":"index.h","line":639,"lineto":643,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each removed path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Remove all matching index entries.</p>\n","comments":"<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is removed.  Return 0 to remove the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_update_all":{"type":"function","file":"index.h","line":668,"lineto":672,"args":[{"name":"index","type":"git_index *","comment":"An existing index object"},{"name":"pathspec","type":"const git_strarray *","comment":"array of path patterns"},{"name":"callback","type":"git_index_matched_path_cb","comment":"notification callback for each updated path (also\n                 gets index of matching pathspec entry); can be NULL;\n                 return 0 to add, >0 to skip, \n<\n0 to abort scan."},{"name":"payload","type":"void *","comment":"payload passed through to callback function"}],"argline":"git_index *index, const git_strarray *pathspec, git_index_matched_path_cb callback, void *payload","sig":"git_index *::const git_strarray *::git_index_matched_path_cb::void *","return":{"type":"int","comment":" 0 on success, negative callback return value, or error code"},"description":"<p>Update all index entries to match the working directory</p>\n","comments":"<p>This method will fail in bare index instances.</p>\n\n<p>This scans the existing index entries and synchronizes them with the working directory, deleting them if the corresponding working directory file no longer exists otherwise updating the information (including adding the latest version of file to the ODB if needed).</p>\n\n<p>If you provide a callback function, it will be invoked on each matching item in the index immediately <em>before</em> it is updated (either refreshed or removed depending on working directory state).  Return 0 to proceed with updating the item, &gt; 0 to skip the item, and &lt; 0 to abort the scan.</p>\n","group":"index"},"git_index_find":{"type":"function","file":"index.h","line":683,"lineto":683,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"size_t *at_pos, git_index *index, const char *path","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" a zero-based position in the index if found; GIT_ENOTFOUND otherwise"},"description":"<p>Find the first position of any entries which point to given\n path in the Git index.</p>\n","comments":"","group":"index"},"git_index_find_prefix":{"type":"function","file":"index.h","line":694,"lineto":694,"args":[{"name":"at_pos","type":"size_t *","comment":"the address to which the position of the index entry is written (optional)"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"prefix","type":"const char *","comment":"the prefix to search for"}],"argline":"size_t *at_pos, git_index *index, const char *prefix","sig":"size_t *::git_index *::const char *","return":{"type":"int","comment":" 0 with valid value in at_pos; an error code otherwise"},"description":"<p>Find the first position of any entries matching a prefix. To find the first position\n of a path inside a given folder, suffix the prefix with a &#39;/&#39;.</p>\n","comments":"","group":"index"},"git_index_conflict_add":{"type":"function","file":"index.h","line":719,"lineto":723,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"ancestor_entry","type":"const git_index_entry *","comment":"the entry data for the ancestor of the conflict"},{"name":"our_entry","type":"const git_index_entry *","comment":"the entry data for our side of the merge conflict"},{"name":"their_entry","type":"const git_index_entry *","comment":"the entry data for their side of the merge conflict"}],"argline":"git_index *index, const git_index_entry *ancestor_entry, const git_index_entry *our_entry, const git_index_entry *their_entry","sig":"git_index *::const git_index_entry *::const git_index_entry *::const git_index_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update index entries to represent a conflict.  Any staged\n entries that exist at the given paths will be removed.</p>\n","comments":"<p>The entries are the entries from the tree included in the merge.  Any entry may be null to indicate that that file was not present in the trees during the merge.  For example, ancestor_entry may be NULL to indicate that a file was added in both branches and must be resolved.</p>\n","group":"index"},"git_index_conflict_get":{"type":"function","file":"index.h","line":739,"lineto":744,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor entry"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store the our entry"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store the their entry"},{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to search"}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index *index, const char *path","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the index entries that represent a conflict of a single file.</p>\n","comments":"<p>The entries are not modifiable and should not be freed.  Because the <code>git_index_entry</code> struct is a publicly defined struct, you should be able to make your own permanent copy of the data if necessary.</p>\n","group":"index"},"git_index_conflict_remove":{"type":"function","file":"index.h","line":753,"lineto":753,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"},{"name":"path","type":"const char *","comment":"path to remove conflicts for"}],"argline":"git_index *index, const char *path","sig":"git_index *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Removes the index entries that represent a conflict of a single file.</p>\n","comments":"","group":"index"},"git_index_conflict_cleanup":{"type":"function","file":"index.h","line":761,"lineto":761,"args":[{"name":"index","type":"git_index *","comment":"an existing index object"}],"argline":"git_index *index","sig":"git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove all conflicts in the index (entries with a stage greater than 0).</p>\n","comments":"","group":"index"},"git_index_has_conflicts":{"type":"function","file":"index.h","line":768,"lineto":768,"args":[{"name":"index","type":"const git_index *","comment":null}],"argline":"const git_index *index","sig":"const git_index *","return":{"type":"int","comment":" 1 if at least one conflict is found, 0 otherwise."},"description":"<p>Determine if the index contains entries representing file conflicts.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_new":{"type":"function","file":"index.h","line":779,"lineto":781,"args":[{"name":"iterator_out","type":"git_index_conflict_iterator **","comment":"The newly created conflict iterator"},{"name":"index","type":"git_index *","comment":"The index to scan"}],"argline":"git_index_conflict_iterator **iterator_out, git_index *index","sig":"git_index_conflict_iterator **::git_index *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the conflicts in the index.</p>\n","comments":"<p>The index must not be modified while iterating; the results are undefined.</p>\n","group":"index"},"git_index_conflict_next":{"type":"function","file":"index.h","line":793,"lineto":797,"args":[{"name":"ancestor_out","type":"const git_index_entry **","comment":"Pointer to store the ancestor side of the conflict"},{"name":"our_out","type":"const git_index_entry **","comment":"Pointer to store our side of the conflict"},{"name":"their_out","type":"const git_index_entry **","comment":"Pointer to store their side of the conflict"},{"name":"iterator","type":"git_index_conflict_iterator *","comment":null}],"argline":"const git_index_entry **ancestor_out, const git_index_entry **our_out, const git_index_entry **their_out, git_index_conflict_iterator *iterator","sig":"const git_index_entry **::const git_index_entry **::const git_index_entry **::git_index_conflict_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Returns the current conflict (ancestor, ours and theirs entry) and\n advance the iterator internally to the next value.</p>\n","comments":"","group":"index"},"git_index_conflict_iterator_free":{"type":"function","file":"index.h","line":804,"lineto":805,"args":[{"name":"iterator","type":"git_index_conflict_iterator *","comment":"pointer to the iterator"}],"argline":"git_index_conflict_iterator *iterator","sig":"git_index_conflict_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_index_conflict_iterator</code>.</p>\n","comments":"","group":"index"},"git_indexer_new":{"type":"function","file":"indexer.h","line":30,"lineto":36,"args":[{"name":"out","type":"git_indexer **","comment":"where to store the indexer instance"},{"name":"path","type":"const char *","comment":"to the directory where the packfile should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating packfile or 0 for defaults"},{"name":"odb","type":"git_odb *","comment":"object database from which to read base objects when\n fixing thin packs. Pass NULL if no thin pack is expected (an error\n will be returned if there are bases missing)"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_indexer **out, const char *path, unsigned int mode, git_odb *odb, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_indexer **::const char *::unsigned int::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Create a new indexer instance</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_indexer_new-1"]}},"git_indexer_append":{"type":"function","file":"indexer.h","line":46,"lineto":46,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"data","type":"const void *","comment":"the data to add"},{"name":"size","type":"size_t","comment":"the size of the data in bytes"},{"name":"stats","type":"git_transfer_progress *","comment":"stat storage"}],"argline":"git_indexer *idx, const void *data, size_t size, git_transfer_progress *stats","sig":"git_indexer *::const void *::size_t::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Add data to the indexer</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_indexer_append-2"]}},"git_indexer_commit":{"type":"function","file":"indexer.h","line":55,"lineto":55,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer"},{"name":"stats","type":"git_transfer_progress *","comment":null}],"argline":"git_indexer *idx, git_transfer_progress *stats","sig":"git_indexer *::git_transfer_progress *","return":{"type":"int","comment":null},"description":"<p>Finalize the pack and index</p>\n","comments":"<p>Resolve any pending deltas and write out the index file</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_indexer_commit-3"]}},"git_indexer_hash":{"type":"function","file":"indexer.h","line":65,"lineto":65,"args":[{"name":"idx","type":"const git_indexer *","comment":"the indexer instance"}],"argline":"const git_indexer *idx","sig":"const git_indexer *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the index has been finalized.</p>\n","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_indexer_hash-4"]}},"git_indexer_free":{"type":"function","file":"indexer.h","line":72,"lineto":72,"args":[{"name":"idx","type":"git_indexer *","comment":"the indexer to free"}],"argline":"git_indexer *idx","sig":"git_indexer *","return":{"type":"void","comment":null},"description":"<p>Free the indexer and its resources</p>\n","comments":"","group":"indexer","examples":{"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_indexer_free-5"]}},"git_merge_file_init_input":{"type":"function","file":"merge.h","line":60,"lineto":62,"args":[{"name":"opts","type":"git_merge_file_input *","comment":"the `git_merge_file_input` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here."}],"argline":"git_merge_file_input *opts, unsigned int version","sig":"git_merge_file_input *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_input</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_INPUT_INIT.</p>\n","comments":"","group":"merge"},"git_merge_file_init_options":{"type":"function","file":"merge.h","line":208,"lineto":210,"args":[{"name":"opts","type":"git_merge_file_options *","comment":"the `git_merge_file_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_FILE_OPTIONS_VERSION` here."}],"argline":"git_merge_file_options *opts, unsigned int version","sig":"git_merge_file_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_file_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_FILE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_init_options":{"type":"function","file":"merge.h","line":304,"lineto":306,"args":[{"name":"opts","type":"git_merge_options *","comment":"the `git_merge_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here."}],"argline":"git_merge_options *opts, unsigned int version","sig":"git_merge_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_merge_options</code> with default values. Equivalent to\n creating an instance with GIT_MERGE_OPTIONS_INIT.</p>\n","comments":"","group":"merge"},"git_merge_analysis":{"type":"function","file":"merge.h","line":375,"lineto":380,"args":[{"name":"analysis_out","type":"git_merge_analysis_t *","comment":"analysis enumeration that the result is written into"},{"name":"preference_out","type":"git_merge_preference_t *","comment":null},{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"}],"argline":"git_merge_analysis_t *analysis_out, git_merge_preference_t *preference_out, git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len","sig":"git_merge_analysis_t *::git_merge_preference_t *::git_repository *::const git_annotated_commit **::size_t","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Analyzes the given branch(es) and determines the opportunities for\n merging them into the HEAD of the repository.</p>\n","comments":"","group":"merge"},"git_merge_base":{"type":"function","file":"merge.h","line":391,"lineto":395,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base between 'one' and 'two'"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oid *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oid *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find a merge base between two commits</p>\n","comments":"","group":"merge","examples":{"log.c":["ex/v0.25.1/log.html#git_merge_base-32"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_merge_base-3"]}},"git_merge_bases":{"type":"function","file":"merge.h","line":406,"lineto":410,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"one","type":"const git_oid *","comment":"one of the commits"},{"name":"two","type":"const git_oid *","comment":"the other commit"}],"argline":"git_oidarray *out, git_repository *repo, const git_oid *one, const git_oid *two","sig":"git_oidarray *::git_repository *::const git_oid *::const git_oid *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if not found or error code"},"description":"<p>Find merge bases between two commits</p>\n","comments":"","group":"merge"},"git_merge_base_many":{"type":"function","file":"merge.h","line":421,"lineto":425,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_bases_many":{"type":"function","file":"merge.h","line":436,"lineto":440,"args":[{"name":"out","type":"git_oidarray *","comment":"array in which to store the resulting ids"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oidarray *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oidarray *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find all merge bases given a list of commits</p>\n","comments":"","group":"merge"},"git_merge_base_octopus":{"type":"function","file":"merge.h","line":451,"lineto":455,"args":[{"name":"out","type":"git_oid *","comment":"the OID of a merge base considering all the commits"},{"name":"repo","type":"git_repository *","comment":"the repository where the commits exist"},{"name":"length","type":"size_t","comment":"The number of commits in the provided `input_array`"},{"name":"input_array","type":"const git_oid []","comment":"oids of the commits"}],"argline":"git_oid *out, git_repository *repo, size_t length, const git_oid [] input_array","sig":"git_oid *::git_repository *::size_t::const git_oid []","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND or -1 on failure."},"description":"<p>Find a merge base in preparation for an octopus merge</p>\n","comments":"","group":"merge"},"git_merge_file":{"type":"function","file":"merge.h","line":473,"lineto":478,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"ancestor","type":"const git_merge_file_input *","comment":"The contents of the ancestor file"},{"name":"ours","type":"const git_merge_file_input *","comment":"The contents of the file in \"our\" side"},{"name":"theirs","type":"const git_merge_file_input *","comment":"The contents of the file in \"their\" side"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or `NULL` for defaults"}],"argline":"git_merge_file_result *out, const git_merge_file_input *ancestor, const git_merge_file_input *ours, const git_merge_file_input *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_input *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the in-memory data structures, using\n the given common ancestor as the baseline, producing a\n <code>git_merge_file_result</code> that reflects the merge result.  The\n <code>git_merge_file_result</code> must be freed with <code>git_merge_file_result_free</code>.</p>\n","comments":"<p>Note that this function does not reference a repository and any configuration must be passed as <code>git_merge_file_options</code>.</p>\n","group":"merge"},"git_merge_file_from_index":{"type":"function","file":"merge.h","line":494,"lineto":500,"args":[{"name":"out","type":"git_merge_file_result *","comment":"The git_merge_file_result to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"ancestor","type":"const git_index_entry *","comment":"The index entry for the ancestor file (stage level 1)"},{"name":"ours","type":"const git_index_entry *","comment":"The index entry for our file (stage level 2)"},{"name":"theirs","type":"const git_index_entry *","comment":"The index entry for their file (stage level 3)"},{"name":"opts","type":"const git_merge_file_options *","comment":"The merge file options or NULL"}],"argline":"git_merge_file_result *out, git_repository *repo, const git_index_entry *ancestor, const git_index_entry *ours, const git_index_entry *theirs, const git_merge_file_options *opts","sig":"git_merge_file_result *::git_repository *::const git_index_entry *::const git_index_entry *::const git_index_entry *::const git_merge_file_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two files as they exist in the index, using the given common\n ancestor as the baseline, producing a <code>git_merge_file_result</code> that\n reflects the merge result.  The <code>git_merge_file_result</code> must be freed with\n <code>git_merge_file_result_free</code>.</p>\n","comments":"","group":"merge"},"git_merge_file_result_free":{"type":"function","file":"merge.h","line":507,"lineto":507,"args":[{"name":"result","type":"git_merge_file_result *","comment":"The result to free or `NULL`"}],"argline":"git_merge_file_result *result","sig":"git_merge_file_result *","return":{"type":"void","comment":null},"description":"<p>Frees a <code>git_merge_file_result</code>.</p>\n","comments":"","group":"merge"},"git_merge_trees":{"type":"function","file":"merge.h","line":525,"lineto":531,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"ancestor_tree","type":"const git_tree *","comment":"the common ancestor between the trees (or null if none)"},{"name":"our_tree","type":"const git_tree *","comment":"the tree that reflects the destination tree"},{"name":"their_tree","type":"const git_tree *","comment":"the tree to merge in to `our_tree`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_tree *ancestor_tree, const git_tree *our_tree, const git_tree *their_tree, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_tree *::const git_tree *::const git_tree *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two trees, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge_commits":{"type":"function","file":"merge.h","line":548,"lineto":553,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"repository that contains the given trees"},{"name":"our_commit","type":"const git_commit *","comment":"the commit that reflects the destination tree"},{"name":"their_commit","type":"const git_commit *","comment":"the commit to merge in to `our_commit`"},{"name":"opts","type":"const git_merge_options *","comment":"the merge tree options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, const git_commit *our_commit, const git_commit *their_commit, const git_merge_options *opts","sig":"git_index **::git_repository *::const git_commit *::const git_commit *::const git_merge_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merge two commits, producing a <code>git_index</code> that reflects the result of\n the merge.  The index may be written as-is to the working directory\n or checked out.  If the index is to be converted to a tree, the caller\n should resolve any conflicts that arose as part of the merge.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"merge"},"git_merge":{"type":"function","file":"merge.h","line":573,"lineto":578,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to merge"},{"name":"their_heads","type":"const git_annotated_commit **","comment":"the heads to merge into"},{"name":"their_heads_len","type":"size_t","comment":"the number of heads to merge"},{"name":"merge_opts","type":"const git_merge_options *","comment":"merge options"},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"checkout options"}],"argline":"git_repository *repo, const git_annotated_commit **their_heads, size_t their_heads_len, const git_merge_options *merge_opts, const git_checkout_options *checkout_opts","sig":"git_repository *::const git_annotated_commit **::size_t::const git_merge_options *::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Merges the given commit(s) into HEAD, writing the results into the working\n directory.  Any changes are staged for commit and any conflicts are written\n to the index.  Callers should inspect the repository&#39;s index after this\n completes, resolve any conflicts and prepare a commit.</p>\n","comments":"<p>For compatibility with git, the repository is put into a merging state. Once the commit is done (or if the uses wishes to abort), you should clear this state by calling <code>git_repository_state_cleanup()</code>.</p>\n","group":"merge"},"git_message_prettify":{"type":"function","file":"message.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_buf *","comment":"The user-allocated git_buf which will be filled with the\n     cleaned up message."},{"name":"message","type":"const char *","comment":"The message to be prettified."},{"name":"strip_comments","type":"int","comment":"Non-zero to remove comment lines, 0 to leave them in."},{"name":"comment_char","type":"char","comment":"Comment character. Lines starting with this character\n are considered to be comments and removed if `strip_comments` is non-zero."}],"argline":"git_buf *out, const char *message, int strip_comments, char comment_char","sig":"git_buf *::const char *::int::char","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Clean up message from excess whitespace and make sure that the last line\n ends with a &#39;</p>\n\n<p>&#39;.</p>\n","comments":"<p>Optionally, can remove lines starting with a &quot;#&quot;.</p>\n","group":"message"},"git_note_iterator_new":{"type":"function","file":"notes.h","line":49,"lineto":52,"args":[{"name":"out","type":"git_note_iterator **","comment":"pointer to the iterator"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""}],"argline":"git_note_iterator **out, git_repository *repo, const char *notes_ref","sig":"git_note_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new iterator for notes</p>\n","comments":"<p>The iterator must be freed manually by the user.</p>\n","group":"note"},"git_note_iterator_free":{"type":"function","file":"notes.h","line":59,"lineto":59,"args":[{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_note_iterator *it","sig":"git_note_iterator *","return":{"type":"void","comment":null},"description":"<p>Frees an git_note_iterator</p>\n","comments":"","group":"note"},"git_note_next":{"type":"function","file":"notes.h","line":72,"lineto":75,"args":[{"name":"note_id","type":"git_oid *","comment":"id of blob containing the message"},{"name":"annotated_id","type":"git_oid *","comment":"id of the git object being annotated"},{"name":"it","type":"git_note_iterator *","comment":"pointer to the iterator"}],"argline":"git_oid *note_id, git_oid *annotated_id, git_note_iterator *it","sig":"git_oid *::git_oid *::git_note_iterator *","return":{"type":"int","comment":" 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)"},"description":"<p>Return the current item (note_id and annotated_id) and advance the iterator\n internally to the next value</p>\n","comments":"","group":"note"},"git_note_read":{"type":"function","file":"notes.h","line":91,"lineto":95,"args":[{"name":"out","type":"git_note **","comment":"pointer to the read note; NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to look up the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\""},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to read the note from"}],"argline":"git_note **out, git_repository *repo, const char *notes_ref, const git_oid *oid","sig":"git_note **::git_repository *::const char *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the note for an object</p>\n","comments":"<p>The note must be freed manually by the user.</p>\n","group":"note"},"git_note_author":{"type":"function","file":"notes.h","line":103,"lineto":103,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the author"},"description":"<p>Get the note author</p>\n","comments":"","group":"note"},"git_note_committer":{"type":"function","file":"notes.h","line":111,"lineto":111,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the note committer</p>\n","comments":"","group":"note"},"git_note_message":{"type":"function","file":"notes.h","line":120,"lineto":120,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const char *","comment":" the note message"},"description":"<p>Get the note message</p>\n","comments":"","group":"note"},"git_note_id":{"type":"function","file":"notes.h","line":129,"lineto":129,"args":[{"name":"note","type":"const git_note *","comment":"the note"}],"argline":"const git_note *note","sig":"const git_note *","return":{"type":"const git_oid *","comment":" the note object's id"},"description":"<p>Get the note object&#39;s id</p>\n","comments":"","group":"note"},"git_note_create":{"type":"function","file":"notes.h","line":146,"lineto":154,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID (optional); NULL in case of error"},{"name":"repo","type":"git_repository *","comment":"repository where to store the note"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to decorate"},{"name":"note","type":"const char *","comment":"Content of the note to add for object oid"},{"name":"force","type":"int","comment":"Overwrite existing note"}],"argline":"git_oid *out, git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid, const char *note, int force","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *::const char *::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a note for an object</p>\n","comments":"","group":"note"},"git_note_remove":{"type":"function","file":"notes.h","line":169,"lineto":174,"args":[{"name":"repo","type":"git_repository *","comment":"repository where the note lives"},{"name":"notes_ref","type":"const char *","comment":"canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\""},{"name":"author","type":"const git_signature *","comment":"signature of the notes commit author"},{"name":"committer","type":"const git_signature *","comment":"signature of the notes commit committer"},{"name":"oid","type":"const git_oid *","comment":"OID of the git object to remove the note from"}],"argline":"git_repository *repo, const char *notes_ref, const git_signature *author, const git_signature *committer, const git_oid *oid","sig":"git_repository *::const char *::const git_signature *::const git_signature *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Remove the note for an object</p>\n","comments":"","group":"note"},"git_note_free":{"type":"function","file":"notes.h","line":181,"lineto":181,"args":[{"name":"note","type":"git_note *","comment":"git_note object"}],"argline":"git_note *note","sig":"git_note *","return":{"type":"void","comment":null},"description":"<p>Free a git_note object</p>\n","comments":"","group":"note"},"git_note_foreach":{"type":"function","file":"notes.h","line":209,"lineto":213,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the notes."},{"name":"notes_ref","type":"const char *","comment":"Reference to read from (optional); defaults to\n        \"refs/notes/commits\"."},{"name":"note_cb","type":"git_note_foreach_cb","comment":"Callback to invoke per found annotation.  Return non-zero\n        to stop looping."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, const char *notes_ref, git_note_foreach_cb note_cb, void *payload","sig":"git_repository *::const char *::git_note_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Loop over all the notes within a specified namespace\n and issue a callback for each one.</p>\n","comments":"","group":"note"},"git_object_lookup":{"type":"function","file":"object.h","line":42,"lineto":46,"args":[{"name":"object","type":"git_object **","comment":"pointer to the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"the unique identifier for the object"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object, git_repository *repo, const git_oid *id, git_otype type","sig":"git_object **::git_repository *::const git_oid *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository.</p>\n","comments":"<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object","examples":{"log.c":["ex/v0.25.1/log.html#git_object_lookup-33"]}},"git_object_lookup_prefix":{"type":"function","file":"object.h","line":75,"lineto":80,"args":[{"name":"object_out","type":"git_object **","comment":"pointer where to store the looked-up object"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the object"},{"name":"id","type":"const git_oid *","comment":"a short identifier for the object"},{"name":"len","type":"size_t","comment":"the length of the short identifier"},{"name":"type","type":"git_otype","comment":"the type of the object"}],"argline":"git_object **object_out, git_repository *repo, const git_oid *id, size_t len, git_otype type","sig":"git_object **::git_repository *::const git_oid *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference to one of the objects in a repository,\n given a prefix of its identifier (short id).</p>\n","comments":"<p>The object obtained will be so that its identifier matches the first &#39;len&#39; hexadecimal characters (packets of 4 bits) of the given &#39;id&#39;. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and long enough to identify a unique object matching the prefix; otherwise the method will fail.</p>\n\n<p>The generated reference is owned by the repository and should be closed with the <code>git_object_free</code> method instead of free&#39;d manually.</p>\n\n<p>The &#39;type&#39; parameter must match the type of the object in the odb; the method will fail otherwise. The special value &#39;GIT_OBJ_ANY&#39; may be passed to let the method guess the object&#39;s type.</p>\n","group":"object"},"git_object_lookup_bypath":{"type":"function","file":"object.h","line":93,"lineto":97,"args":[{"name":"out","type":"git_object **","comment":"buffer that receives a pointer to the object (which must be freed\n            by the caller)"},{"name":"treeish","type":"const git_object *","comment":"root object that can be peeled to a tree"},{"name":"path","type":"const char *","comment":"relative path from the root object to the desired object"},{"name":"type","type":"git_otype","comment":"type of object desired"}],"argline":"git_object **out, const git_object *treeish, const char *path, git_otype type","sig":"git_object **::const git_object *::const char *::git_otype","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Lookup an object that represents a tree entry.</p>\n","comments":"","group":"object"},"git_object_id":{"type":"function","file":"object.h","line":105,"lineto":105,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"const git_oid *","comment":" the SHA1 id"},"description":"<p>Get the id (SHA1) of a repository object</p>\n","comments":"","group":"object","examples":{"blame.c":["ex/v0.25.1/blame.html#git_object_id-10","ex/v0.25.1/blame.html#git_object_id-11","ex/v0.25.1/blame.html#git_object_id-12","ex/v0.25.1/blame.html#git_object_id-13"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_object_id-12","ex/v0.25.1/cat-file.html#git_object_id-13"],"log.c":["ex/v0.25.1/log.html#git_object_id-34","ex/v0.25.1/log.html#git_object_id-35","ex/v0.25.1/log.html#git_object_id-36","ex/v0.25.1/log.html#git_object_id-37"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_object_id-4","ex/v0.25.1/rev-parse.html#git_object_id-5","ex/v0.25.1/rev-parse.html#git_object_id-6","ex/v0.25.1/rev-parse.html#git_object_id-7","ex/v0.25.1/rev-parse.html#git_object_id-8"]}},"git_object_short_id":{"type":"function","file":"object.h","line":119,"lineto":119,"args":[{"name":"out","type":"git_buf *","comment":"Buffer to write string into"},{"name":"obj","type":"const git_object *","comment":"The object to get an ID for"}],"argline":"git_buf *out, const git_object *obj","sig":"git_buf *::const git_object *","return":{"type":"int","comment":" 0 on success, \n<\n0 for error"},"description":"<p>Get a short abbreviated OID string for the object</p>\n","comments":"<p>This starts at the &quot;core.abbrev&quot; length (default 7 characters) and iteratively extends to a longer string if that length is ambiguous. The result will be unambiguous (at least until new objects are added to the repository).</p>\n","group":"object","examples":{"tag.c":["ex/v0.25.1/tag.html#git_object_short_id-5"]}},"git_object_type":{"type":"function","file":"object.h","line":127,"lineto":127,"args":[{"name":"obj","type":"const git_object *","comment":"the repository object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_otype","comment":" the object's type"},"description":"<p>Get the object type of an object</p>\n","comments":"","group":"object","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_object_type-14","ex/v0.25.1/cat-file.html#git_object_type-15","ex/v0.25.1/cat-file.html#git_object_type-16"],"tag.c":["ex/v0.25.1/tag.html#git_object_type-6"]}},"git_object_owner":{"type":"function","file":"object.h","line":141,"lineto":141,"args":[{"name":"obj","type":"const git_object *","comment":"the object"}],"argline":"const git_object *obj","sig":"const git_object *","return":{"type":"git_repository *","comment":" the repository who owns this object"},"description":"<p>Get the repository that owns this object</p>\n","comments":"<p>Freeing or calling <code>git_repository_close</code> on the returned pointer will invalidate the actual object.</p>\n\n<p>Any other operation may be run on the repository without affecting the object.</p>\n","group":"object"},"git_object_free":{"type":"function","file":"object.h","line":158,"lineto":158,"args":[{"name":"object","type":"git_object *","comment":"the object to close"}],"argline":"git_object *object","sig":"git_object *","return":{"type":"void","comment":null},"description":"<p>Close an open object</p>\n","comments":"<p>This method instructs the library to close an existing object; note that git_objects are owned and cached by the repository so the object may or may not be freed after this library call, depending on how aggressive is the caching mechanism used by the repository.</p>\n\n<p>IMPORTANT: It <em>is</em> necessary to call this method when you stop using an object. Failure to do so will cause a memory leak.</p>\n","group":"object","examples":{"blame.c":["ex/v0.25.1/blame.html#git_object_free-14","ex/v0.25.1/blame.html#git_object_free-15","ex/v0.25.1/blame.html#git_object_free-16","ex/v0.25.1/blame.html#git_object_free-17"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_object_free-17"],"general.c":["ex/v0.25.1/general.html#git_object_free-32"],"log.c":["ex/v0.25.1/log.html#git_object_free-38"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_object_free-9","ex/v0.25.1/rev-parse.html#git_object_free-10","ex/v0.25.1/rev-parse.html#git_object_free-11"],"tag.c":["ex/v0.25.1/tag.html#git_object_free-7","ex/v0.25.1/tag.html#git_object_free-8","ex/v0.25.1/tag.html#git_object_free-9","ex/v0.25.1/tag.html#git_object_free-10"]}},"git_object_type2string":{"type":"function","file":"object.h","line":169,"lineto":169,"args":[{"name":"type","type":"git_otype","comment":"object type to convert."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"const char *","comment":" the corresponding string representation."},"description":"<p>Convert an object type to its string representation.</p>\n","comments":"<p>The result is a pointer to a string in static memory and should not be free()&#39;ed.</p>\n","group":"object","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_object_type2string-18","ex/v0.25.1/cat-file.html#git_object_type2string-19","ex/v0.25.1/cat-file.html#git_object_type2string-20","ex/v0.25.1/cat-file.html#git_object_type2string-21"],"general.c":["ex/v0.25.1/general.html#git_object_type2string-33","ex/v0.25.1/general.html#git_object_type2string-34"]}},"git_object_string2type":{"type":"function","file":"object.h","line":177,"lineto":177,"args":[{"name":"str","type":"const char *","comment":"the string to convert."}],"argline":"const char *str","sig":"const char *","return":{"type":"git_otype","comment":" the corresponding git_otype."},"description":"<p>Convert a string object type representation to it&#39;s git_otype.</p>\n","comments":"","group":"object"},"git_object_typeisloose":{"type":"function","file":"object.h","line":186,"lineto":186,"args":[{"name":"type","type":"git_otype","comment":"object type to test."}],"argline":"git_otype type","sig":"git_otype","return":{"type":"int","comment":" true if the type represents a valid loose object type,\n false otherwise."},"description":"<p>Determine if the given git_otype is a valid loose object type.</p>\n","comments":"","group":"object"},"git_object__size":{"type":"function","file":"object.h","line":200,"lineto":200,"args":[{"name":"type","type":"git_otype","comment":"object type to get its size"}],"argline":"git_otype type","sig":"git_otype","return":{"type":"size_t","comment":" size in bytes of the object"},"description":"<p>Get the size in bytes for the structure which\n acts as an in-memory representation of any given\n object type.</p>\n","comments":"<p>For all the core types, this would the equivalent of calling <code>sizeof(git_commit)</code> if the core types were not opaque on the external API.</p>\n","group":"object"},"git_object_peel":{"type":"function","file":"object.h","line":225,"lineto":228,"args":[{"name":"peeled","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"object","type":"const git_object *","comment":"The object to be processed"},{"name":"target_type","type":"git_otype","comment":"The type of the requested object (a GIT_OBJ_ value)"}],"argline":"git_object **peeled, const git_object *object, git_otype target_type","sig":"git_object **::const git_object *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EPEEL, or an error code"},"description":"<p>Recursively peel an object until an object of the specified type is met.</p>\n","comments":"<p>If the query cannot be satisfied due to the object model, GIT_EINVALIDSPEC will be returned (e.g. trying to peel a blob to a tree).</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until the type changes. A tag will be peeled until the referenced object is no longer a tag, and a commit will be peeled to a tree. Any other object type will return GIT_EINVALIDSPEC.</p>\n\n<p>If peeling a tag we discover an object which cannot be peeled to the target type due to the object model, GIT_EPEEL will be returned.</p>\n\n<p>You must free the returned object.</p>\n","group":"object"},"git_object_dup":{"type":"function","file":"object.h","line":237,"lineto":237,"args":[{"name":"dest","type":"git_object **","comment":"Pointer to store the copy of the object"},{"name":"source","type":"git_object *","comment":"Original object to copy"}],"argline":"git_object **dest, git_object *source","sig":"git_object **::git_object *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a Git object. The copy must be\n explicitly free&#39;d or it will leak.</p>\n","comments":"","group":"object"},"git_odb_new":{"type":"function","file":"odb.h","line":39,"lineto":39,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."}],"argline":"git_odb **out","sig":"git_odb **","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database with no backends.</p>\n","comments":"<p>Before the ODB can be used for read/writing, a custom database backend must be manually added using <code>git_odb_add_backend()</code></p>\n","group":"odb"},"git_odb_open":{"type":"function","file":"odb.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_odb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"objects_dir","type":"const char *","comment":"path of the backends' \"objects\" directory."}],"argline":"git_odb **out, const char *objects_dir","sig":"git_odb **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new object database and automatically add\n the two default backends:</p>\n","comments":"<pre><code>- git_odb_backend_loose: read and write loose object files      from disk, assuming `objects_dir` as the Objects folder\n\n- git_odb_backend_pack: read objects from packfiles,        assuming `objects_dir` as the Objects folder which      contains a &#39;pack/&#39; folder with the corresponding data\n</code></pre>\n","group":"odb"},"git_odb_add_disk_alternate":{"type":"function","file":"odb.h","line":74,"lineto":74,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"path","type":"const char *","comment":"path to the objects folder for the alternate"}],"argline":"git_odb *odb, const char *path","sig":"git_odb *::const char *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add an on-disk alternate to an existing Object DB.</p>\n","comments":"<p>Note that the added path must point to an <code>objects</code>, not to a full repository, to use it as an alternate store.</p>\n\n<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n","group":"odb"},"git_odb_free":{"type":"function","file":"odb.h","line":81,"lineto":81,"args":[{"name":"db","type":"git_odb *","comment":"database pointer to close. If NULL no action is taken."}],"argline":"git_odb *db","sig":"git_odb *","return":{"type":"void","comment":null},"description":"<p>Close an open object database.</p>\n","comments":"","group":"odb","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_odb_free-22"]}},"git_odb_read":{"type":"function","file":"odb.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"git_odb_object **out, git_odb *db, const git_oid *id","sig":"git_odb_object **::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read an object from the database.</p>\n","comments":"<p>This method queries all available ODB backends trying to read the given OID.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_odb_read-23"],"general.c":["ex/v0.25.1/general.html#git_odb_read-35"]}},"git_odb_read_prefix":{"type":"function","file":"odb.h","line":129,"lineto":129,"args":[{"name":"out","type":"git_odb_object **","comment":"pointer where to store the read object"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"short_id","type":"const git_oid *","comment":"a prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"the length of the prefix"}],"argline":"git_odb_object **out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_odb_object **::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.\n - GIT_EAMBIGUOUS if the prefix is ambiguous (several objects match the prefix)"},"description":"<p>Read an object from the database, given a prefix\n of its identifier.</p>\n","comments":"<p>This method queries all available ODB backends trying to match the &#39;len&#39; first hexadecimal characters of the &#39;short_id&#39;. The remaining (GIT_OID_HEXSZ-len)*4 bits of &#39;short_id&#39; must be 0s. &#39;len&#39; must be at least GIT_OID_MINPREFIXLEN, and the prefix must be long enough to identify a unique object in all the backends; the method will fail otherwise.</p>\n\n<p>The returned object is reference counted and internally cached, so it should be closed by the user once it&#39;s no longer in use.</p>\n","group":"odb"},"git_odb_read_header":{"type":"function","file":"odb.h","line":149,"lineto":149,"args":[{"name":"len_out","type":"size_t *","comment":"pointer where to store the length"},{"name":"type_out","type":"git_otype *","comment":"pointer where to store the type"},{"name":"db","type":"git_odb *","comment":"database to search for the object in."},{"name":"id","type":"const git_oid *","comment":"identity of the object to read."}],"argline":"size_t *len_out, git_otype *type_out, git_odb *db, const git_oid *id","sig":"size_t *::git_otype *::git_odb *::const git_oid *","return":{"type":"int","comment":" - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database."},"description":"<p>Read the header of an object from the database, without\n reading its full contents.</p>\n","comments":"<p>The header includes the length and the type of an object.</p>\n\n<p>Note that most backends do not support reading only the header of an object, so the whole object will be read and then the header will be returned.</p>\n","group":"odb"},"git_odb_exists":{"type":"function","file":"odb.h","line":160,"lineto":160,"args":[{"name":"db","type":"git_odb *","comment":"database to be searched for the given object."},{"name":"id","type":"const git_oid *","comment":"the object to search for."}],"argline":"git_odb *db, const git_oid *id","sig":"git_odb *::const git_oid *","return":{"type":"int","comment":" - 1, if the object was found\n - 0, otherwise"},"description":"<p>Determine if the given object can be found in the object database.</p>\n","comments":"","group":"odb"},"git_odb_exists_prefix":{"type":"function","file":"odb.h","line":173,"lineto":174,"args":[{"name":"out","type":"git_oid *","comment":"The full OID of the found object if just one is found."},{"name":"db","type":"git_odb *","comment":"The database to be searched for the given object."},{"name":"short_id","type":"const git_oid *","comment":"A prefix of the id of the object to read."},{"name":"len","type":"size_t","comment":"The length of the prefix."}],"argline":"git_oid *out, git_odb *db, const git_oid *short_id, size_t len","sig":"git_oid *::git_odb *::const git_oid *::size_t","return":{"type":"int","comment":" 0 if found, GIT_ENOTFOUND if not found, GIT_EAMBIGUOUS if multiple\n         matches were found, other value \n<\n 0 if there was a read error."},"description":"<p>Determine if an object can be found in the object database by an\n abbreviated object ID.</p>\n","comments":"","group":"odb"},"git_odb_expand_ids":{"type":"function","file":"odb.h","line":215,"lineto":218,"args":[{"name":"db","type":"git_odb *","comment":"The database to be searched for the given objects."},{"name":"ids","type":"git_odb_expand_id *","comment":"An array of short object IDs to search for"},{"name":"count","type":"size_t","comment":"The length of the `ids` array"}],"argline":"git_odb *db, git_odb_expand_id *ids, size_t count","sig":"git_odb *::git_odb_expand_id *::size_t","return":{"type":"int","comment":" 0 on success or an error code on failure"},"description":"<p>Determine if one or more objects can be found in the object database\n by their abbreviated object ID and type.  The given array will be\n updated in place:  for each abbreviated ID that is unique in the\n database, and of the given type (if specified), the full object ID,\n object ID length (<code>GIT_OID_HEXSZ</code>) and type will be written back to\n the array.  For IDs that are not found (or are ambiguous), the\n array entry will be zeroed.</p>\n","comments":"<p>Note that since this function operates on multiple objects, the underlying database will not be asked to be reloaded if an object is not found (which is unlike other object database operations.)</p>\n","group":"odb"},"git_odb_refresh":{"type":"function","file":"odb.h","line":238,"lineto":238,"args":[{"name":"db","type":"struct git_odb *","comment":"database to refresh"}],"argline":"struct git_odb *db","sig":"struct git_odb *","return":{"type":"int","comment":" 0 on success, error code otherwise"},"description":"<p>Refresh the object database to load newly added files.</p>\n","comments":"<p>If the object databases have changed on disk while the library is running, this function will force a reload of the underlying indexes.</p>\n\n<p>Use this function when you&#39;re confident that an external application has tampered with the ODB.</p>\n\n<p>NOTE that it is not necessary to call this function at all. The library will automatically attempt to refresh the ODB when a lookup fails, to see if the looked up object exists on disk but hasn&#39;t been loaded yet.</p>\n","group":"odb"},"git_odb_foreach":{"type":"function","file":"odb.h","line":253,"lineto":253,"args":[{"name":"db","type":"git_odb *","comment":"database to use"},{"name":"cb","type":"git_odb_foreach_cb","comment":"the callback to call for each object"},{"name":"payload","type":"void *","comment":"data to pass to the callback"}],"argline":"git_odb *db, git_odb_foreach_cb cb, void *payload","sig":"git_odb *::git_odb_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>List all objects available in the database</p>\n","comments":"<p>The callback will be called for each object available in the database. Note that the objects are likely to be returned in the index order, which would make accessing the objects in that order inefficient. Return a non-zero value from the callback to stop looping.</p>\n","group":"odb"},"git_odb_write":{"type":"function","file":"odb.h","line":273,"lineto":273,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the OID result of the write"},{"name":"odb","type":"git_odb *","comment":"object database where to store the object"},{"name":"data","type":"const void *","comment":"buffer with the data to store"},{"name":"len","type":"size_t","comment":"size of the buffer"},{"name":"type","type":"git_otype","comment":"type of the data to store"}],"argline":"git_oid *out, git_odb *odb, const void *data, size_t len, git_otype type","sig":"git_oid *::git_odb *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an object directly into the ODB</p>\n","comments":"<p>This method writes a full object straight into the ODB. For most cases, it is preferred to write objects through a write stream, which is both faster and less memory intensive, specially for big objects.</p>\n\n<p>This method is provided for compatibility with custom backends which are not able to support streaming writes</p>\n","group":"odb","examples":{"general.c":["ex/v0.25.1/general.html#git_odb_write-36"]}},"git_odb_open_wstream":{"type":"function","file":"odb.h","line":296,"lineto":296,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will write"},{"name":"size","type":"git_off_t","comment":"final size of the object that will be written"},{"name":"type","type":"git_otype","comment":"type of the object that will be written"}],"argline":"git_odb_stream **out, git_odb *db, git_off_t size, git_otype type","sig":"git_odb_stream **::git_odb *::git_off_t::git_otype","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to write an object into the ODB</p>\n","comments":"<p>The type and final length of the object must be specified when opening the stream.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_WRONLY</code>, and it won&#39;t be effective until <code>git_odb_stream_finalize_write</code> is called and returns without an error</p>\n\n<p>The stream must always be freed when done with <code>git_odb_stream_free</code> or will leak memory.</p>\n","group":"odb"},"git_odb_stream_write":{"type":"function","file":"odb.h","line":309,"lineto":309,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream"},{"name":"buffer","type":"const char *","comment":"the data to write"},{"name":"len","type":"size_t","comment":"the buffer's length"}],"argline":"git_odb_stream *stream, const char *buffer, size_t len","sig":"git_odb_stream *::const char *::size_t","return":{"type":"int","comment":" 0 if the write succeeded; error code otherwise"},"description":"<p>Write to an odb stream</p>\n","comments":"<p>This method will fail if the total number of received bytes exceeds the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_finalize_write":{"type":"function","file":"odb.h","line":324,"lineto":324,"args":[{"name":"out","type":"git_oid *","comment":"pointer to store the resulting object's id"},{"name":"stream","type":"git_odb_stream *","comment":"the stream"}],"argline":"git_oid *out, git_odb_stream *stream","sig":"git_oid *::git_odb_stream *","return":{"type":"int","comment":" 0 on success; an error code otherwise"},"description":"<p>Finish writing to an odb stream</p>\n","comments":"<p>The object will take its final name and will be available to the odb.</p>\n\n<p>This method will fail if the total number of received bytes differs from the size declared with <code>git_odb_open_wstream()</code></p>\n","group":"odb"},"git_odb_stream_read":{"type":"function","file":"odb.h","line":331,"lineto":331,"args":[{"name":"stream","type":"git_odb_stream *","comment":null},{"name":"buffer","type":"char *","comment":null},{"name":"len","type":"size_t","comment":null}],"argline":"git_odb_stream *stream, char *buffer, size_t len","sig":"git_odb_stream *::char *::size_t","return":{"type":"int","comment":null},"description":"<p>Read from an odb stream</p>\n","comments":"<p>Most backends don&#39;t implement streaming reads</p>\n","group":"odb"},"git_odb_stream_free":{"type":"function","file":"odb.h","line":338,"lineto":338,"args":[{"name":"stream","type":"git_odb_stream *","comment":"the stream to free"}],"argline":"git_odb_stream *stream","sig":"git_odb_stream *","return":{"type":"void","comment":null},"description":"<p>Free an odb stream</p>\n","comments":"","group":"odb"},"git_odb_open_rstream":{"type":"function","file":"odb.h","line":364,"lineto":364,"args":[{"name":"out","type":"git_odb_stream **","comment":"pointer where to store the stream"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"oid","type":"const git_oid *","comment":"oid of the object the stream will read from"}],"argline":"git_odb_stream **out, git_odb *db, const git_oid *oid","sig":"git_odb_stream **::git_odb *::const git_oid *","return":{"type":"int","comment":" 0 if the stream was created; error code otherwise"},"description":"<p>Open a stream to read an object from the ODB</p>\n","comments":"<p>Note that most backends do <em>not</em> support streaming reads because they store their objects as compressed/delta&#39;ed blobs.</p>\n\n<p>It&#39;s recommended to use <code>git_odb_read</code> instead, which is assured to work on all backends.</p>\n\n<p>The returned stream will be of type <code>GIT_STREAM_RDONLY</code> and will have the following methods:</p>\n\n<pre><code>    - stream-&gt;read: read `n` bytes from the stream      - stream-&gt;free: free the stream\n</code></pre>\n\n<p>The stream must always be free&#39;d or will leak memory.</p>\n","group":"odb"},"git_odb_write_pack":{"type":"function","file":"odb.h","line":384,"lineto":388,"args":[{"name":"out","type":"git_odb_writepack **","comment":"pointer to the writepack functions"},{"name":"db","type":"git_odb *","comment":"object database where the stream will read from"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information.\n Be aware that this is called inline with network and indexing operations,\n so performance may be affected."},{"name":"progress_payload","type":"void *","comment":"payload for the progress callback"}],"argline":"git_odb_writepack **out, git_odb *db, git_transfer_progress_cb progress_cb, void *progress_payload","sig":"git_odb_writepack **::git_odb *::git_transfer_progress_cb::void *","return":{"type":"int","comment":null},"description":"<p>Open a stream for writing a pack file to the ODB.</p>\n","comments":"<p>If the ODB layer understands pack files, then the given packfile will likely be streamed directly to disk (and a corresponding index created).  If the ODB layer does not understand pack files, the objects will be stored in whatever format the ODB layer uses.</p>\n","group":"odb"},"git_odb_hash":{"type":"function","file":"odb.h","line":402,"lineto":402,"args":[{"name":"out","type":"git_oid *","comment":"the resulting object-ID."},{"name":"data","type":"const void *","comment":"data to hash"},{"name":"len","type":"size_t","comment":"size of the data"},{"name":"type","type":"git_otype","comment":"of the data to hash"}],"argline":"git_oid *out, const void *data, size_t len, git_otype type","sig":"git_oid *::const void *::size_t::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Determine the object-ID (sha1 hash) of a data buffer</p>\n","comments":"<p>The resulting SHA-1 OID will be the identifier for the data buffer as if the data buffer it were to written to the ODB.</p>\n","group":"odb"},"git_odb_hashfile":{"type":"function","file":"odb.h","line":417,"lineto":417,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"path","type":"const char *","comment":"file to read and determine object id for"},{"name":"type","type":"git_otype","comment":"the type of the object that will be hashed"}],"argline":"git_oid *out, const char *path, git_otype type","sig":"git_oid *::const char *::git_otype","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read a file from disk and fill a git_oid with the object id\n that the file would have if it were written to the Object\n Database as an object of the given type (w/o applying filters).\n Similar functionality to git.git&#39;s <code>git hash-object</code> without\n the <code>-w</code> flag, however, with the --no-filters flag.\n If you need filters, see git_repository_hashfile.</p>\n","comments":"","group":"odb"},"git_odb_object_dup":{"type":"function","file":"odb.h","line":431,"lineto":431,"args":[{"name":"dest","type":"git_odb_object **","comment":"pointer where to store the copy"},{"name":"source","type":"git_odb_object *","comment":"object to copy"}],"argline":"git_odb_object **dest, git_odb_object *source","sig":"git_odb_object **::git_odb_object *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an odb_object</p>\n","comments":"<p>The returned copy must be manually freed with <code>git_odb_object_free</code>. Note that because of an implementation detail, the returned copy will be the same pointer as <code>source</code>: the object is internally refcounted, so the copy still needs to be freed twice.</p>\n","group":"odb"},"git_odb_object_free":{"type":"function","file":"odb.h","line":441,"lineto":441,"args":[{"name":"object","type":"git_odb_object *","comment":"object to close"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"void","comment":null},"description":"<p>Close an ODB object</p>\n","comments":"<p>This method must always be called once a <code>git_odb_object</code> is no longer needed, otherwise memory will leak.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_odb_object_free-24"],"general.c":["ex/v0.25.1/general.html#git_odb_object_free-37"]}},"git_odb_object_id":{"type":"function","file":"odb.h","line":451,"lineto":451,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const git_oid *","comment":" a pointer to the OID"},"description":"<p>Return the OID of an ODB object</p>\n","comments":"<p>This is the OID from which the object was read from</p>\n","group":"odb"},"git_odb_object_data":{"type":"function","file":"odb.h","line":464,"lineto":464,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"const void *","comment":" a pointer to the data"},"description":"<p>Return the data of an ODB object</p>\n","comments":"<p>This is the uncompressed, raw data as read from the ODB, without the leading header.</p>\n\n<p>This pointer is owned by the object and shall not be free&#39;d.</p>\n","group":"odb","examples":{"general.c":["ex/v0.25.1/general.html#git_odb_object_data-38"]}},"git_odb_object_size":{"type":"function","file":"odb.h","line":475,"lineto":475,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"size_t","comment":" the size"},"description":"<p>Return the size of an ODB object</p>\n","comments":"<p>This is the real size of the <code>data</code> buffer, not the actual size of the object.</p>\n","group":"odb","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_odb_object_size-25"],"general.c":["ex/v0.25.1/general.html#git_odb_object_size-39"]}},"git_odb_object_type":{"type":"function","file":"odb.h","line":483,"lineto":483,"args":[{"name":"object","type":"git_odb_object *","comment":"the object"}],"argline":"git_odb_object *object","sig":"git_odb_object *","return":{"type":"git_otype","comment":" the type"},"description":"<p>Return the type of an ODB object</p>\n","comments":"","group":"odb","examples":{"general.c":["ex/v0.25.1/general.html#git_odb_object_type-40"]}},"git_odb_add_backend":{"type":"function","file":"odb.h","line":498,"lineto":498,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB</p>\n","comments":"<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_add_alternate":{"type":"function","file":"odb.h","line":519,"lineto":519,"args":[{"name":"odb","type":"git_odb *","comment":"database to add the backend to"},{"name":"backend","type":"git_odb_backend *","comment":"pointer to a git_odb_backend instance"},{"name":"priority","type":"int","comment":"Value for ordering the backends queue"}],"argline":"git_odb *odb, git_odb_backend *backend, int priority","sig":"git_odb *::git_odb_backend *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Add a custom backend to an existing Object DB; this\n backend will work as an alternate.</p>\n","comments":"<p>Alternate backends are always checked for objects <em>after</em> all the main backends have been exhausted.</p>\n\n<p>The backends are checked in relative ordering, based on the value of the <code>priority</code> parameter.</p>\n\n<p>Writing is disabled on alternate backends.</p>\n\n<p>Read <odb_backends.h> for more information.</p>\n","group":"odb"},"git_odb_num_backends":{"type":"function","file":"odb.h","line":527,"lineto":527,"args":[{"name":"odb","type":"git_odb *","comment":"object database"}],"argline":"git_odb *odb","sig":"git_odb *","return":{"type":"size_t","comment":" number of backends in the ODB"},"description":"<p>Get the number of ODB backend objects</p>\n","comments":"","group":"odb"},"git_odb_get_backend":{"type":"function","file":"odb.h","line":537,"lineto":537,"args":[{"name":"out","type":"git_odb_backend **","comment":"output pointer to ODB backend at pos"},{"name":"odb","type":"git_odb *","comment":"object database"},{"name":"pos","type":"size_t","comment":"index into object database backend list"}],"argline":"git_odb_backend **out, git_odb *odb, size_t pos","sig":"git_odb_backend **::git_odb *::size_t","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if pos is invalid; other errors \n<\n 0"},"description":"<p>Lookup an ODB backend object by index</p>\n","comments":"","group":"odb"},"git_odb_backend_pack":{"type":"function","file":"odb_backend.h","line":34,"lineto":34,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"}],"argline":"git_odb_backend **out, const char *objects_dir","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for the packfiles.</p>\n","comments":"","group":"odb"},"git_odb_backend_loose":{"type":"function","file":"odb_backend.h","line":48,"lineto":54,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"objects_dir","type":"const char *","comment":"the Git repository's objects directory"},{"name":"compression_level","type":"int","comment":"zlib compression level to use"},{"name":"do_fsync","type":"int","comment":"whether to do an fsync() after writing (currently ignored)"},{"name":"dir_mode","type":"unsigned int","comment":"permissions to use creating a directory or 0 for defaults"},{"name":"file_mode","type":"unsigned int","comment":"permissions to use creating a file or 0 for defaults"}],"argline":"git_odb_backend **out, const char *objects_dir, int compression_level, int do_fsync, unsigned int dir_mode, unsigned int file_mode","sig":"git_odb_backend **::const char *::int::int::unsigned int::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend for loose objects</p>\n","comments":"","group":"odb"},"git_odb_backend_one_pack":{"type":"function","file":"odb_backend.h","line":67,"lineto":67,"args":[{"name":"out","type":"git_odb_backend **","comment":"location to store the odb backend pointer"},{"name":"index_file","type":"const char *","comment":"path to the packfile's .idx file"}],"argline":"git_odb_backend **out, const char *index_file","sig":"git_odb_backend **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a backend out of a single packfile</p>\n","comments":"<p>This can be useful for inspecting the contents of a single packfile.</p>\n","group":"odb"},"git_oid_fromstr":{"type":"function","file":"oid.h","line":47,"lineto":47,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes)."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted object id into a git_oid.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.25.1/general.html#git_oid_fromstr-41","ex/v0.25.1/general.html#git_oid_fromstr-42","ex/v0.25.1/general.html#git_oid_fromstr-43","ex/v0.25.1/general.html#git_oid_fromstr-44","ex/v0.25.1/general.html#git_oid_fromstr-45","ex/v0.25.1/general.html#git_oid_fromstr-46","ex/v0.25.1/general.html#git_oid_fromstr-47","ex/v0.25.1/general.html#git_oid_fromstr-48"]}},"git_oid_fromstrp":{"type":"function","file":"oid.h","line":57,"lineto":57,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string; must be at least 4 characters\n      long and null-terminated."}],"argline":"git_oid *out, const char *str","sig":"git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse a hex formatted null-terminated string into a git_oid.</p>\n","comments":"","group":"oid"},"git_oid_fromstrn":{"type":"function","file":"oid.h","line":70,"lineto":70,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"str","type":"const char *","comment":"input hex string of at least size `length`"},{"name":"length","type":"size_t","comment":"length of the input string"}],"argline":"git_oid *out, const char *str, size_t length","sig":"git_oid *::const char *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Parse N characters of a hex formatted object id into a git_oid</p>\n","comments":"<p>If N is odd, N-1 characters will be parsed instead. The remaining space in the git_oid will be set to zero.</p>\n","group":"oid"},"git_oid_fromraw":{"type":"function","file":"oid.h","line":78,"lineto":78,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"raw","type":"const unsigned char *","comment":"the raw input bytes to be copied."}],"argline":"git_oid *out, const unsigned char *raw","sig":"git_oid *::const unsigned char *","return":{"type":"void","comment":null},"description":"<p>Copy an already raw oid into a git_oid structure.</p>\n","comments":"","group":"oid"},"git_oid_fmt":{"type":"function","file":"oid.h","line":90,"lineto":90,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a hex string.</p>\n","comments":"","group":"oid","examples":{"general.c":["ex/v0.25.1/general.html#git_oid_fmt-49","ex/v0.25.1/general.html#git_oid_fmt-50","ex/v0.25.1/general.html#git_oid_fmt-51","ex/v0.25.1/general.html#git_oid_fmt-52","ex/v0.25.1/general.html#git_oid_fmt-53","ex/v0.25.1/general.html#git_oid_fmt-54"],"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_oid_fmt-1","ex/v0.25.1/network/fetch.html#git_oid_fmt-2"],"network/index-pack.c":["ex/v0.25.1/network/index-pack.html#git_oid_fmt-6"],"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_oid_fmt-1"]}},"git_oid_nfmt":{"type":"function","file":"oid.h","line":101,"lineto":101,"args":[{"name":"out","type":"char *","comment":"output hex string; you say how many bytes to write.\n\t\tIf the number of bytes is > GIT_OID_HEXSZ, extra bytes\n\t\twill be zeroed; if not, a '\n\\\n0' terminator is NOT added."},{"name":"n","type":"size_t","comment":"number of characters to write into out string"},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a partial hex string.</p>\n","comments":"","group":"oid"},"git_oid_pathfmt":{"type":"function","file":"oid.h","line":116,"lineto":116,"args":[{"name":"out","type":"char *","comment":"output hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (41 bytes). Only the\n\t\toid digits are written; a '\n\\\n0' terminator must be added\n\t\tby the caller if it is required."},{"name":"id","type":"const git_oid *","comment":"oid structure to format."}],"argline":"char *out, const git_oid *id","sig":"char *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Format a git_oid into a loose-object path string.</p>\n","comments":"<p>The resulting string is &quot;aa/...&quot;, where &quot;aa&quot; is the first two hex digits of the oid and &quot;...&quot; is the remaining 38 digits.</p>\n","group":"oid"},"git_oid_tostr_s":{"type":"function","file":"oid.h","line":129,"lineto":129,"args":[{"name":"oid","type":"const git_oid *","comment":"The oid structure to format"}],"argline":"const git_oid *oid","sig":"const git_oid *","return":{"type":"char *","comment":" the c-string"},"description":"<p>Format a git_oid into a statically allocated c-string.</p>\n","comments":"<p>The c-string is owned by the library and should not be freed by the user. If libgit2 is built with thread support, the string will be stored in TLS (i.e. one buffer per thread) to allow for concurrent calls of the function.</p>\n","group":"oid"},"git_oid_tostr":{"type":"function","file":"oid.h","line":148,"lineto":148,"args":[{"name":"out","type":"char *","comment":"the buffer into which the oid string is output."},{"name":"n","type":"size_t","comment":"the size of the out buffer."},{"name":"id","type":"const git_oid *","comment":"the oid structure to format."}],"argline":"char *out, size_t n, const git_oid *id","sig":"char *::size_t::const git_oid *","return":{"type":"char *","comment":" the out buffer pointer, assuming no input parameter\n\t\t\terrors, otherwise a pointer to an empty string."},"description":"<p>Format a git_oid into a buffer as a hex format c-string.</p>\n","comments":"<p>If the buffer is smaller than GIT_OID_HEXSZ+1, then the resulting oid c-string will be truncated to n-1 characters (but will still be NUL-byte terminated).</p>\n\n<p>If there are any input parameter errors (out == NULL, n == 0, oid == NULL), then a pointer to an empty string is returned, so that the return value can always be printed.</p>\n","group":"oid","examples":{"blame.c":["ex/v0.25.1/blame.html#git_oid_tostr-18","ex/v0.25.1/blame.html#git_oid_tostr-19"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_oid_tostr-26","ex/v0.25.1/cat-file.html#git_oid_tostr-27","ex/v0.25.1/cat-file.html#git_oid_tostr-28","ex/v0.25.1/cat-file.html#git_oid_tostr-29","ex/v0.25.1/cat-file.html#git_oid_tostr-30"],"log.c":["ex/v0.25.1/log.html#git_oid_tostr-39","ex/v0.25.1/log.html#git_oid_tostr-40"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_oid_tostr-12","ex/v0.25.1/rev-parse.html#git_oid_tostr-13","ex/v0.25.1/rev-parse.html#git_oid_tostr-14","ex/v0.25.1/rev-parse.html#git_oid_tostr-15"]}},"git_oid_cpy":{"type":"function","file":"oid.h","line":156,"lineto":156,"args":[{"name":"out","type":"git_oid *","comment":"oid structure the result is written into."},{"name":"src","type":"const git_oid *","comment":"oid structure to copy from."}],"argline":"git_oid *out, const git_oid *src","sig":"git_oid *::const git_oid *","return":{"type":"void","comment":null},"description":"<p>Copy an oid from one structure to another.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.25.1/blame.html#git_oid_cpy-20","ex/v0.25.1/blame.html#git_oid_cpy-21","ex/v0.25.1/blame.html#git_oid_cpy-22"]}},"git_oid_cmp":{"type":"function","file":"oid.h","line":165,"lineto":165,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" \n<\n0, 0, >0 if a \n<\n b, a == b, a > b."},"description":"<p>Compare two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_equal":{"type":"function","file":"oid.h","line":174,"lineto":174,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."}],"argline":"const git_oid *a, const git_oid *b","sig":"const git_oid *::const git_oid *","return":{"type":"int","comment":" true if equal, false otherwise"},"description":"<p>Compare two oid structures for equality</p>\n","comments":"","group":"oid"},"git_oid_ncmp":{"type":"function","file":"oid.h","line":185,"lineto":185,"args":[{"name":"a","type":"const git_oid *","comment":"first oid structure."},{"name":"b","type":"const git_oid *","comment":"second oid structure."},{"name":"len","type":"size_t","comment":"the number of hex chars to compare"}],"argline":"const git_oid *a, const git_oid *b, size_t len","sig":"const git_oid *::const git_oid *::size_t","return":{"type":"int","comment":" 0 in case of a match"},"description":"<p>Compare the first &#39;len&#39; hexadecimal characters (packets of 4 bits)\n of two oid structures.</p>\n","comments":"","group":"oid"},"git_oid_streq":{"type":"function","file":"oid.h","line":194,"lineto":194,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" 0 in case of a match, -1 otherwise."},"description":"<p>Check if an oid equals an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_strcmp":{"type":"function","file":"oid.h","line":204,"lineto":204,"args":[{"name":"id","type":"const git_oid *","comment":"oid structure."},{"name":"str","type":"const char *","comment":"input hex string of an object id."}],"argline":"const git_oid *id, const char *str","sig":"const git_oid *::const char *","return":{"type":"int","comment":" -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str."},"description":"<p>Compare an oid to an hex formatted object id.</p>\n","comments":"","group":"oid"},"git_oid_iszero":{"type":"function","file":"oid.h","line":211,"lineto":211,"args":[{"name":"id","type":"const git_oid *","comment":null}],"argline":"const git_oid *id","sig":"const git_oid *","return":{"type":"int","comment":" 1 if all zeros, 0 otherwise."},"description":"<p>Check is an oid is all zeros.</p>\n","comments":"","group":"oid","examples":{"blame.c":["ex/v0.25.1/blame.html#git_oid_iszero-23"],"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_oid_iszero-3"]}},"git_oid_shorten_new":{"type":"function","file":"oid.h","line":232,"lineto":232,"args":[{"name":"min_length","type":"size_t","comment":"The minimal length for all identifiers,\n\t\twhich will be used even if shorter OIDs would still\n\t\tbe unique."}],"argline":"size_t min_length","sig":"size_t","return":{"type":"git_oid_shorten *","comment":" a `git_oid_shorten` instance, NULL if OOM"},"description":"<p>Create a new OID shortener.</p>\n","comments":"<p>The OID shortener is used to process a list of OIDs in text form and return the shortest length that would uniquely identify all of them.</p>\n\n<p>E.g. look at the result of <code>git log --abbrev</code>.</p>\n","group":"oid"},"git_oid_shorten_add":{"type":"function","file":"oid.h","line":258,"lineto":258,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"},{"name":"text_id","type":"const char *","comment":"an OID in text form"}],"argline":"git_oid_shorten *os, const char *text_id","sig":"git_oid_shorten *::const char *","return":{"type":"int","comment":" the minimal length to uniquely identify all OIDs\n\t\tadded so far to the set; or an error code (\n<\n0) if an\n\t\terror occurs."},"description":"<p>Add a new OID to set of shortened OIDs and calculate\n the minimal length to uniquely identify all the OIDs in\n the set.</p>\n","comments":"<p>The OID is expected to be a 40-char hexadecimal string. The OID is owned by the user and will not be modified or freed.</p>\n\n<p>For performance reasons, there is a hard-limit of how many OIDs can be added to a single set (around ~32000, assuming a mostly randomized distribution), which should be enough for any kind of program, and keeps the algorithm fast and memory-efficient.</p>\n\n<p>Attempting to add more than those OIDs will result in a GITERR_INVALID error</p>\n","group":"oid"},"git_oid_shorten_free":{"type":"function","file":"oid.h","line":265,"lineto":265,"args":[{"name":"os","type":"git_oid_shorten *","comment":"a `git_oid_shorten` instance"}],"argline":"git_oid_shorten *os","sig":"git_oid_shorten *","return":{"type":"void","comment":null},"description":"<p>Free an OID shortener instance</p>\n","comments":"","group":"oid"},"git_oidarray_free":{"type":"function","file":"oidarray.h","line":34,"lineto":34,"args":[{"name":"array","type":"git_oidarray *","comment":"git_oidarray from which to free oid data"}],"argline":"git_oidarray *array","sig":"git_oidarray *","return":{"type":"void","comment":null},"description":"<p>Free the OID array</p>\n","comments":"<p>This method must (and must only) be called on <code>git_oidarray</code> objects where the array is allocated by the library. Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_oidarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"oidarray"},"git_packbuilder_new":{"type":"function","file":"pack.h","line":64,"lineto":64,"args":[{"name":"out","type":"git_packbuilder **","comment":"The new packbuilder object"},{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_packbuilder **out, git_repository *repo","sig":"git_packbuilder **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Initialize a new packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_threads":{"type":"function","file":"pack.h","line":77,"lineto":77,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"n","type":"unsigned int","comment":"Number of threads to spawn"}],"argline":"git_packbuilder *pb, unsigned int n","sig":"git_packbuilder *::unsigned int","return":{"type":"unsigned int","comment":" number of actual threads to be used"},"description":"<p>Set number of threads to spawn</p>\n","comments":"<p>By default, libgit2 won&#39;t spawn any threads at all; when set to 0, libgit2 will autodetect the number of CPUs.</p>\n","group":"packbuilder"},"git_packbuilder_insert":{"type":"function","file":"pack.h","line":91,"lineto":91,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"},{"name":"name","type":"const char *","comment":"The name; might be NULL"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a single object</p>\n","comments":"<p>For an optimal pack it&#39;s mandatory to insert objects in recency order, commits followed by trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_tree":{"type":"function","file":"pack.h","line":103,"lineto":103,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the root tree"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a root tree object</p>\n","comments":"<p>This will add the tree as well as all referenced trees and blobs.</p>\n","group":"packbuilder"},"git_packbuilder_insert_commit":{"type":"function","file":"pack.h","line":115,"lineto":115,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"id","type":"const git_oid *","comment":"The oid of the commit"}],"argline":"git_packbuilder *pb, const git_oid *id","sig":"git_packbuilder *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert a commit object</p>\n","comments":"<p>This will add a commit as well as the completed referenced tree.</p>\n","group":"packbuilder"},"git_packbuilder_insert_walk":{"type":"function","file":"pack.h","line":128,"lineto":128,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"walk","type":"git_revwalk *","comment":"the revwalk to use to fill the packbuilder"}],"argline":"git_packbuilder *pb, git_revwalk *walk","sig":"git_packbuilder *::git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Insert objects as given by the walk</p>\n","comments":"<p>Those commits and all objects they reference will be inserted into the packbuilder.</p>\n","group":"packbuilder"},"git_packbuilder_insert_recur":{"type":"function","file":"pack.h","line":140,"lineto":140,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"id","type":"const git_oid *","comment":"the id of the root object to insert"},{"name":"name","type":"const char *","comment":"optional name for the object"}],"argline":"git_packbuilder *pb, const git_oid *id, const char *name","sig":"git_packbuilder *::const git_oid *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively insert an object and its referenced objects</p>\n","comments":"<p>Insert the object as well as any object it references.</p>\n","group":"packbuilder"},"git_packbuilder_write":{"type":"function","file":"pack.h","line":164,"lineto":169,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"},{"name":"path","type":"const char *","comment":"to the directory where the packfile and index should be stored"},{"name":"mode","type":"unsigned int","comment":"permissions to use creating a packfile or 0 for defaults"},{"name":"progress_cb","type":"git_transfer_progress_cb","comment":"function to call with progress information from the indexer (optional)"},{"name":"progress_cb_payload","type":"void *","comment":"payload for the progress callback (optional)"}],"argline":"git_packbuilder *pb, const char *path, unsigned int mode, git_transfer_progress_cb progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::const char *::unsigned int::git_transfer_progress_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the new pack and corresponding index file to path.</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_hash":{"type":"function","file":"pack.h","line":179,"lineto":179,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the packfile&#39;s hash</p>\n","comments":"<p>A packfile&#39;s name is derived from the sorted hashing of all object names. This is only correct after the packfile has been written.</p>\n","group":"packbuilder"},"git_packbuilder_foreach":{"type":"function","file":"pack.h","line":191,"lineto":191,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"},{"name":"cb","type":"git_packbuilder_foreach_cb","comment":"the callback to call with each packed object's buffer"},{"name":"payload","type":"void *","comment":"the callback's data"}],"argline":"git_packbuilder *pb, git_packbuilder_foreach_cb cb, void *payload","sig":"git_packbuilder *::git_packbuilder_foreach_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create the new pack and pass each object to the callback</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_object_count":{"type":"function","file":"pack.h","line":199,"lineto":199,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects in the packfile"},"description":"<p>Get the total number of objects the packbuilder will write out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_written":{"type":"function","file":"pack.h","line":207,"lineto":207,"args":[{"name":"pb","type":"git_packbuilder *","comment":"the packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"size_t","comment":" the number of objects which have already been written"},"description":"<p>Get the number of objects the packbuilder has already written out</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_set_callbacks":{"type":"function","file":"pack.h","line":226,"lineto":229,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder object"},{"name":"progress_cb","type":"git_packbuilder_progress","comment":"Function to call with progress information during\n pack building. Be aware that this is called inline with pack building\n operations, so performance may be affected."},{"name":"progress_cb_payload","type":"void *","comment":"Payload for progress callback."}],"argline":"git_packbuilder *pb, git_packbuilder_progress progress_cb, void *progress_cb_payload","sig":"git_packbuilder *::git_packbuilder_progress::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the callbacks for a packbuilder</p>\n","comments":"","group":"packbuilder"},"git_packbuilder_free":{"type":"function","file":"pack.h","line":236,"lineto":236,"args":[{"name":"pb","type":"git_packbuilder *","comment":"The packbuilder"}],"argline":"git_packbuilder *pb","sig":"git_packbuilder *","return":{"type":"void","comment":null},"description":"<p>Free the packbuilder and all associated data</p>\n","comments":"","group":"packbuilder"},"git_patch_from_diff":{"type":"function","file":"patch.h","line":51,"lineto":52,"args":[{"name":"out","type":"git_patch **","comment":"Output parameter for the delta patch object"},{"name":"diff","type":"git_diff *","comment":"Diff list object"},{"name":"idx","type":"size_t","comment":"Index into diff list"}],"argline":"git_patch **out, git_diff *diff, size_t idx","sig":"git_patch **::git_diff *::size_t","return":{"type":"int","comment":" 0 on success, other value \n<\n 0 on error"},"description":"<p>Return a patch for an entry in the diff list.</p>\n","comments":"<p>The <code>git_patch</code> is a newly created object contains the text diffs for the delta.  You have to call <code>git_patch_free()</code> when you are done with it.  You can use the patch object to loop over all the hunks and lines in the diff of the one delta.</p>\n\n<p>For an unchanged file or a binary file, no <code>git_patch</code> will be created, the output will be set to NULL, and the <code>binary</code> flag will be set true in the <code>git_diff_delta</code> structure.</p>\n\n<p>It is okay to pass NULL for either of the output parameters; if you pass NULL for the <code>git_patch</code>, then the text diff will not be calculated.</p>\n","group":"patch"},"git_patch_from_blobs":{"type":"function","file":"patch.h","line":70,"lineto":76,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"new_blob","type":"const git_blob *","comment":"Blob for new side of diff, or NULL for empty blob"},{"name":"new_as_path","type":"const char *","comment":"Treat new blob as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const git_blob *new_blob, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const git_blob *::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two blobs.</p>\n","comments":"<p>This is just like <code>git_diff_blobs()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_blob_and_buffer":{"type":"function","file":"patch.h","line":95,"lineto":102,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_blob","type":"const git_blob *","comment":"Blob for old side of diff, or NULL for empty blob"},{"name":"old_as_path","type":"const char *","comment":"Treat old blob as if it had this filename; can be NULL"},{"name":"buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"buffer_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"buffer_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const git_blob *old_blob, const char *old_as_path, const char *buffer, size_t buffer_len, const char *buffer_as_path, const git_diff_options *opts","sig":"git_patch **::const git_blob *::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between a blob and a buffer.</p>\n","comments":"<p>This is just like <code>git_diff_blob_to_buffer()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_from_buffers":{"type":"function","file":"patch.h","line":122,"lineto":130,"args":[{"name":"out","type":"git_patch **","comment":"The generated patch; NULL on error"},{"name":"old_buffer","type":"const void *","comment":"Raw data for old side of diff, or NULL for empty"},{"name":"old_len","type":"size_t","comment":"Length of the raw data for old side of the diff"},{"name":"old_as_path","type":"const char *","comment":"Treat old buffer as if it had this filename; can be NULL"},{"name":"new_buffer","type":"const char *","comment":"Raw data for new side of diff, or NULL for empty"},{"name":"new_len","type":"size_t","comment":"Length of raw data for new side of diff"},{"name":"new_as_path","type":"const char *","comment":"Treat buffer as if it had this filename; can be NULL"},{"name":"opts","type":"const git_diff_options *","comment":"Options for diff, or NULL for default options"}],"argline":"git_patch **out, const void *old_buffer, size_t old_len, const char *old_as_path, const char *new_buffer, size_t new_len, const char *new_as_path, const git_diff_options *opts","sig":"git_patch **::const void *::size_t::const char *::const char *::size_t::const char *::const git_diff_options *","return":{"type":"int","comment":" 0 on success or error code \n<\n 0"},"description":"<p>Directly generate a patch from the difference between two buffers.</p>\n","comments":"<p>This is just like <code>git_diff_buffers()</code> except it generates a patch object for the difference instead of directly making callbacks.  You can use the standard <code>git_patch</code> accessor functions to read the patch data, and you must call <code>git_patch_free()</code> on the patch when done.</p>\n","group":"patch"},"git_patch_free":{"type":"function","file":"patch.h","line":135,"lineto":135,"args":[{"name":"patch","type":"git_patch *","comment":null}],"argline":"git_patch *patch","sig":"git_patch *","return":{"type":"void","comment":null},"description":"<p>Free a git_patch object.</p>\n","comments":"","group":"patch"},"git_patch_get_delta":{"type":"function","file":"patch.h","line":141,"lineto":141,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"const git_diff_delta *","comment":null},"description":"<p>Get the delta associated with a patch.  This delta points to internal\n data and you do not have to release it when you are done with it.</p>\n","comments":"","group":"patch"},"git_patch_num_hunks":{"type":"function","file":"patch.h","line":146,"lineto":146,"args":[{"name":"patch","type":"const git_patch *","comment":null}],"argline":"const git_patch *patch","sig":"const git_patch *","return":{"type":"size_t","comment":null},"description":"<p>Get the number of hunks in a patch</p>\n","comments":"","group":"patch"},"git_patch_line_stats":{"type":"function","file":"patch.h","line":164,"lineto":168,"args":[{"name":"total_context","type":"size_t *","comment":"Count of context lines in output, can be NULL."},{"name":"total_additions","type":"size_t *","comment":"Count of addition lines in output, can be NULL."},{"name":"total_deletions","type":"size_t *","comment":"Count of deletion lines in output, can be NULL."},{"name":"patch","type":"const git_patch *","comment":"The git_patch object"}],"argline":"size_t *total_context, size_t *total_additions, size_t *total_deletions, const git_patch *patch","sig":"size_t *::size_t *::size_t *::const git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get line counts of each type in a patch.</p>\n","comments":"<p>This helps imitate a diff --numstat type of output.  For that purpose, you only need the <code>total_additions</code> and <code>total_deletions</code> values, but we include the <code>total_context</code> line count in case you want the total number of lines of diff output that will be generated.</p>\n\n<p>All outputs are optional. Pass NULL if you don&#39;t need a particular count.</p>\n","group":"patch"},"git_patch_get_hunk":{"type":"function","file":"patch.h","line":183,"lineto":187,"args":[{"name":"out","type":"const git_diff_hunk **","comment":"Output pointer to git_diff_hunk of hunk"},{"name":"lines_in_hunk","type":"size_t *","comment":"Output count of total lines in this hunk"},{"name":"patch","type":"git_patch *","comment":"Input pointer to patch object"},{"name":"hunk_idx","type":"size_t","comment":"Input index of hunk to get information about"}],"argline":"const git_diff_hunk **out, size_t *lines_in_hunk, git_patch *patch, size_t hunk_idx","sig":"const git_diff_hunk **::size_t *::git_patch *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error"},"description":"<p>Get the information about a hunk in a patch</p>\n","comments":"<p>Given a patch and a hunk index into the patch, this returns detailed information about that hunk.  Any of the output pointers can be passed as NULL if you don&#39;t care about that particular piece of information.</p>\n","group":"patch"},"git_patch_num_lines_in_hunk":{"type":"function","file":"patch.h","line":196,"lineto":198,"args":[{"name":"patch","type":"const git_patch *","comment":"The git_patch object"},{"name":"hunk_idx","type":"size_t","comment":"Index of the hunk"}],"argline":"const git_patch *patch, size_t hunk_idx","sig":"const git_patch *::size_t","return":{"type":"int","comment":" Number of lines in hunk or GIT_ENOTFOUND if invalid hunk index"},"description":"<p>Get the number of lines in a hunk.</p>\n","comments":"","group":"patch"},"git_patch_get_line_in_hunk":{"type":"function","file":"patch.h","line":214,"lineto":218,"args":[{"name":"out","type":"const git_diff_line **","comment":"The git_diff_line data for this line"},{"name":"patch","type":"git_patch *","comment":"The patch to look in"},{"name":"hunk_idx","type":"size_t","comment":"The index of the hunk"},{"name":"line_of_hunk","type":"size_t","comment":"The index of the line in the hunk"}],"argline":"const git_diff_line **out, git_patch *patch, size_t hunk_idx, size_t line_of_hunk","sig":"const git_diff_line **::git_patch *::size_t::size_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Get data about a line in a hunk of a patch.</p>\n","comments":"<p>Given a patch, a hunk index, and a line index in the hunk, this will return a lot of details about that line.  If you pass a hunk index larger than the number of hunks or a line index larger than the number of lines in the hunk, this will return -1.</p>\n","group":"patch"},"git_patch_size":{"type":"function","file":"patch.h","line":236,"lineto":240,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"include_context","type":"int","comment":"Include context lines in size if non-zero"},{"name":"include_hunk_headers","type":"int","comment":"Include hunk header lines if non-zero"},{"name":"include_file_headers","type":"int","comment":"Include file header lines if non-zero"}],"argline":"git_patch *patch, int include_context, int include_hunk_headers, int include_file_headers","sig":"git_patch *::int::int::int","return":{"type":"size_t","comment":" The number of bytes of data"},"description":"<p>Look up size of patch diff data in bytes</p>\n","comments":"<p>This returns the raw size of the patch data.  This only includes the actual data from the lines of the diff, not the file or hunk headers.</p>\n\n<p>If you pass <code>include_context</code> as true (non-zero), this will be the size of all of the diff output; if you pass it as false (zero), this will only include the actual changed lines (as if <code>context_lines</code> was 0).</p>\n","group":"patch"},"git_patch_print":{"type":"function","file":"patch.h","line":254,"lineto":257,"args":[{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"},{"name":"print_cb","type":"git_diff_line_cb","comment":"Callback function to output lines of the patch.  Will be\n                 called for file headers, hunk headers, and diff lines."},{"name":"payload","type":"void *","comment":"Reference pointer that will be passed to your callbacks."}],"argline":"git_patch *patch, git_diff_line_cb print_cb, void *payload","sig":"git_patch *::git_diff_line_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Serialize the patch to text via callback.</p>\n","comments":"<p>Returning a non-zero value from the callback will terminate the iteration and return that value to the caller.</p>\n","group":"patch"},"git_patch_to_buf":{"type":"function","file":"patch.h","line":266,"lineto":268,"args":[{"name":"out","type":"git_buf *","comment":"The git_buf to be filled in"},{"name":"patch","type":"git_patch *","comment":"A git_patch representing changes to one file"}],"argline":"git_buf *out, git_patch *patch","sig":"git_buf *::git_patch *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Get the content of a patch as a single diff text.</p>\n","comments":"","group":"patch"},"git_pathspec_new":{"type":"function","file":"pathspec.h","line":65,"lineto":66,"args":[{"name":"out","type":"git_pathspec **","comment":"Output of the compiled pathspec"},{"name":"pathspec","type":"const git_strarray *","comment":"A git_strarray of the paths to match"}],"argline":"git_pathspec **out, const git_strarray *pathspec","sig":"git_pathspec **::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Compile a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.25.1/log.html#git_pathspec_new-41"]}},"git_pathspec_free":{"type":"function","file":"pathspec.h","line":73,"lineto":73,"args":[{"name":"ps","type":"git_pathspec *","comment":"The compiled pathspec"}],"argline":"git_pathspec *ps","sig":"git_pathspec *","return":{"type":"void","comment":null},"description":"<p>Free a pathspec</p>\n","comments":"","group":"pathspec","examples":{"log.c":["ex/v0.25.1/log.html#git_pathspec_free-42"]}},"git_pathspec_matches_path":{"type":"function","file":"pathspec.h","line":88,"lineto":89,"args":[{"name":"ps","type":"const git_pathspec *","comment":"The compiled pathspec"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"path","type":"const char *","comment":"The pathname to attempt to match"}],"argline":"const git_pathspec *ps, uint32_t flags, const char *path","sig":"const git_pathspec *::uint32_t::const char *","return":{"type":"int","comment":" 1 is path matches spec, 0 if it does not"},"description":"<p>Try to match a path against a pathspec</p>\n","comments":"<p>Unlike most of the other pathspec matching functions, this will not fall back on the native case-sensitivity for your platform.  You must explicitly pass flags to control case sensitivity or else this will fall back on being case sensitive.</p>\n","group":"pathspec"},"git_pathspec_match_workdir":{"type":"function","file":"pathspec.h","line":113,"lineto":117,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"repo","type":"git_repository *","comment":"The repository in which to match; bare repo is an error"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_repository *repo, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_repository *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given"},"description":"<p>Match a pathspec against the working directory of a repository.</p>\n","comments":"<p>This matches the pathspec against the current files in the working directory of the repository.  It is an error to invoke this on a bare repo.  This handles git ignores (i.e. ignored files will not be considered to match the <code>pathspec</code> unless the file is tracked in the index).</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_index":{"type":"function","file":"pathspec.h","line":142,"lineto":146,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"index","type":"git_index *","comment":"The index to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_index *index, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_index *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against entries in an index.</p>\n","comments":"<p>This matches the pathspec against the files in the repository index.</p>\n\n<p>NOTE: At the moment, the case sensitivity of this match is controlled by the current case-sensitivity of the index object itself and the USE_CASE and IGNORE_CASE flags will have no effect.  This behavior will be corrected in a future release.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_tree":{"type":"function","file":"pathspec.h","line":166,"lineto":170,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"tree","type":"git_tree *","comment":"The root-level tree to match against"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_tree *tree, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_tree *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a tree.</p>\n","comments":"<p>This matches the pathspec against the files in the given tree.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec","examples":{"log.c":["ex/v0.25.1/log.html#git_pathspec_match_tree-43"]}},"git_pathspec_match_diff":{"type":"function","file":"pathspec.h","line":190,"lineto":194,"args":[{"name":"out","type":"git_pathspec_match_list **","comment":"Output list of matches; pass NULL to just get return value"},{"name":"diff","type":"git_diff *","comment":"A generated diff list"},{"name":"flags","type":"uint32_t","comment":"Combination of git_pathspec_flag_t options to control match"},{"name":"ps","type":"git_pathspec *","comment":"Pathspec to be matched"}],"argline":"git_pathspec_match_list **out, git_diff *diff, uint32_t flags, git_pathspec *ps","sig":"git_pathspec_match_list **::git_diff *::uint32_t::git_pathspec *","return":{"type":"int","comment":" 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used"},"description":"<p>Match a pathspec against files in a diff list.</p>\n","comments":"<p>This matches the pathspec against the files in the given diff list.</p>\n\n<p>If <code>out</code> is not NULL, this returns a <code>git_patchspec_match_list</code>.  That contains the list of all matched filenames (unless you pass the <code>GIT_PATHSPEC_FAILURES_ONLY</code> flag) and may also contain the list of pathspecs with no match (if you used the <code>GIT_PATHSPEC_FIND_FAILURES</code> flag).  You must call <code>git_pathspec_match_list_free()</code> on this object.</p>\n","group":"pathspec"},"git_pathspec_match_list_free":{"type":"function","file":"pathspec.h","line":201,"lineto":201,"args":[{"name":"m","type":"git_pathspec_match_list *","comment":"The git_pathspec_match_list to be freed"}],"argline":"git_pathspec_match_list *m","sig":"git_pathspec_match_list *","return":{"type":"void","comment":null},"description":"<p>Free memory associates with a git_pathspec_match_list</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entrycount":{"type":"function","file":"pathspec.h","line":209,"lineto":210,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in match list"},"description":"<p>Get the number of items in a match list.</p>\n","comments":"","group":"pathspec"},"git_pathspec_match_list_entry":{"type":"function","file":"pathspec.h","line":222,"lineto":223,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The filename of the match"},"description":"<p>Get a matching filename by position.</p>\n","comments":"<p>This routine cannot be used if the match list was generated by <code>git_pathspec_match_diff</code>.  If so, it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_diff_entry":{"type":"function","file":"pathspec.h","line":235,"lineto":236,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the list"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const git_diff_delta *","comment":" The filename of the match"},"description":"<p>Get a matching diff delta by position.</p>\n","comments":"<p>This routine can only be used if the match list was generated by <code>git_pathspec_match_diff</code>.  Otherwise it will always return NULL.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entrycount":{"type":"function","file":"pathspec.h","line":247,"lineto":248,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"}],"argline":"const git_pathspec_match_list *m","sig":"const git_pathspec_match_list *","return":{"type":"size_t","comment":" Number of items in original pathspec that had no matches"},"description":"<p>Get the number of pathspec items that did not match.</p>\n","comments":"<p>This will be zero unless you passed GIT_PATHSPEC_FIND_FAILURES when generating the git_pathspec_match_list.</p>\n","group":"pathspec"},"git_pathspec_match_list_failed_entry":{"type":"function","file":"pathspec.h","line":259,"lineto":260,"args":[{"name":"m","type":"const git_pathspec_match_list *","comment":"The git_pathspec_match_list object"},{"name":"pos","type":"size_t","comment":"The index into the failed items"}],"argline":"const git_pathspec_match_list *m, size_t pos","sig":"const git_pathspec_match_list *::size_t","return":{"type":"const char *","comment":" The pathspec pattern that didn't match anything"},"description":"<p>Get an original pathspec string that had no matches.</p>\n","comments":"<p>This will be return NULL for positions out of range.</p>\n","group":"pathspec"},"git_proxy_init_options":{"type":"function","file":"proxy.h","line":88,"lineto":88,"args":[{"name":"opts","type":"git_proxy_options *","comment":"the options struct to initialize"},{"name":"version","type":"unsigned int","comment":"the version of the struct, use `GIT_PROXY_OPTIONS_VERSION`"}],"argline":"git_proxy_options *opts, unsigned int version","sig":"git_proxy_options *::unsigned int","return":{"type":"int","comment":null},"description":"<p>Initialize a proxy options structure</p>\n","comments":"","group":"proxy"},"git_rebase_init_options":{"type":"function","file":"rebase.h","line":156,"lineto":158,"args":[{"name":"opts","type":"git_rebase_options *","comment":"the `git_rebase_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_REBASE_OPTIONS_VERSION` here."}],"argline":"git_rebase_options *opts, unsigned int version","sig":"git_rebase_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_rebase_options</code> with default values. Equivalent to\n creating an instance with GIT_REBASE_OPTIONS_INIT.</p>\n","comments":"","group":"rebase"},"git_rebase_init":{"type":"function","file":"rebase.h","line":177,"lineto":183,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository to perform the rebase"},{"name":"branch","type":"const git_annotated_commit *","comment":"The terminal commit to rebase, or NULL to rebase the\n               current branch"},{"name":"upstream","type":"const git_annotated_commit *","comment":"The commit to begin rebasing from, or NULL to rebase all\n                 reachable commits"},{"name":"onto","type":"const git_annotated_commit *","comment":"The branch to rebase onto, or NULL to rebase onto the given\n             upstream"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed, or NULL"}],"argline":"git_rebase **out, git_repository *repo, const git_annotated_commit *branch, const git_annotated_commit *upstream, const git_annotated_commit *onto, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_annotated_commit *::const git_annotated_commit *::const git_annotated_commit *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a rebase operation to rebase the changes in <code>branch</code>\n relative to <code>upstream</code> onto another branch.  To begin the rebase\n process, call <code>git_rebase_next</code>.  When you have finished with this\n object, call <code>git_rebase_free</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_open":{"type":"function","file":"rebase.h","line":194,"lineto":197,"args":[{"name":"out","type":"git_rebase **","comment":"Pointer to store the rebase object"},{"name":"repo","type":"git_repository *","comment":"The repository that has a rebase in-progress"},{"name":"opts","type":"const git_rebase_options *","comment":"Options to specify how rebase is performed"}],"argline":"git_rebase **out, git_repository *repo, const git_rebase_options *opts","sig":"git_rebase **::git_repository *::const git_rebase_options *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Opens an existing rebase that was previously started by either an\n invocation of <code>git_rebase_init</code> or by another client.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_entrycount":{"type":"function","file":"rebase.h","line":205,"lineto":205,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The number of rebase operations in total"},"description":"<p>Gets the count of rebase operations that are to be applied.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_current":{"type":"function","file":"rebase.h","line":216,"lineto":216,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"size_t","comment":" The index of the rebase operation currently being applied."},"description":"<p>Gets the index of the rebase operation that is currently being applied.\n If the first operation has not yet been applied (because you have\n called <code>init</code> but not yet <code>next</code>) then this returns\n <code>GIT_REBASE_NO_OPERATION</code>.</p>\n","comments":"","group":"rebase"},"git_rebase_operation_byindex":{"type":"function","file":"rebase.h","line":225,"lineto":227,"args":[{"name":"rebase","type":"git_rebase *","comment":"The in-progress rebase"},{"name":"idx","type":"size_t","comment":"The index of the rebase operation to retrieve"}],"argline":"git_rebase *rebase, size_t idx","sig":"git_rebase *::size_t","return":{"type":"git_rebase_operation *","comment":" The rebase operation or NULL if `idx` was out of bounds"},"description":"<p>Gets the rebase operation specified by the given index.</p>\n","comments":"","group":"rebase"},"git_rebase_next":{"type":"function","file":"rebase.h","line":240,"lineto":242,"args":[{"name":"operation","type":"git_rebase_operation **","comment":"Pointer to store the rebase operation that is to be performed next"},{"name":"rebase","type":"git_rebase *","comment":"The rebase in progress"}],"argline":"git_rebase_operation **operation, git_rebase *rebase","sig":"git_rebase_operation **::git_rebase *","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Performs the next rebase operation and returns the information about it.\n If the operation is one that applies a patch (which is any operation except\n GIT_REBASE_OPERATION_EXEC) then the patch will be applied and the index and\n working directory will be updated with the changes.  If there are conflicts,\n you will need to address those before committing the changes.</p>\n","comments":"","group":"rebase"},"git_rebase_inmemory_index":{"type":"function","file":"rebase.h","line":255,"lineto":257,"args":[{"name":"index","type":"git_index **","comment":null},{"name":"rebase","type":"git_rebase *","comment":null}],"argline":"git_index **index, git_rebase *rebase","sig":"git_index **::git_rebase *","return":{"type":"int","comment":null},"description":"<p>Gets the index produced by the last operation, which is the result\n of <code>git_rebase_next</code> and which will be committed by the next\n invocation of <code>git_rebase_commit</code>.  This is useful for resolving\n conflicts in an in-memory rebase before committing them.  You must\n call <code>git_index_free</code> when you are finished with this.</p>\n","comments":"<p>This is only applicable for in-memory rebases; for rebases within a working directory, the changes were applied to the repository&#39;s index.</p>\n","group":"rebase"},"git_rebase_commit":{"type":"function","file":"rebase.h","line":281,"lineto":287,"args":[{"name":"id","type":"git_oid *","comment":"Pointer in which to store the OID of the newly created commit"},{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"author","type":"const git_signature *","comment":"The author of the updated commit, or NULL to keep the\n        author from the original commit"},{"name":"committer","type":"const git_signature *","comment":"The committer of the rebase"},{"name":"message_encoding","type":"const char *","comment":"The encoding for the message in the commit,\n        represented with a standard encoding name.  If message is NULL,\n        this should also be NULL, and the encoding from the original\n        commit will be maintained.  If message is specified, this may be\n        NULL to indicate that \"UTF-8\" is to be used."},{"name":"message","type":"const char *","comment":"The message for this commit, or NULL to use the message\n        from the original commit."}],"argline":"git_oid *id, git_rebase *rebase, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message","sig":"git_oid *::git_rebase *::const git_signature *::const git_signature *::const char *::const char *","return":{"type":"int","comment":" Zero on success, GIT_EUNMERGED if there are unmerged changes in\n        the index, GIT_EAPPLIED if the current commit has already\n        been applied to the upstream and there is nothing to commit,\n        -1 on failure."},"description":"<p>Commits the current patch.  You must have resolved any conflicts that\n were introduced during the patch application from the <code>git_rebase_next</code>\n invocation.</p>\n","comments":"","group":"rebase"},"git_rebase_abort":{"type":"function","file":"rebase.h","line":297,"lineto":297,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"int","comment":" Zero on success; GIT_ENOTFOUND if a rebase is not in progress,\n         -1 on other errors."},"description":"<p>Aborts a rebase that is currently in progress, resetting the repository\n and working directory to their state before rebase began.</p>\n","comments":"","group":"rebase"},"git_rebase_finish":{"type":"function","file":"rebase.h","line":307,"lineto":309,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase that is in-progress"},{"name":"signature","type":"const git_signature *","comment":"The identity that is finishing the rebase (optional)"}],"argline":"git_rebase *rebase, const git_signature *signature","sig":"git_rebase *::const git_signature *","return":{"type":"int","comment":" Zero on success; -1 on error"},"description":"<p>Finishes a rebase that is currently in progress once all patches have\n been applied.</p>\n","comments":"","group":"rebase"},"git_rebase_free":{"type":"function","file":"rebase.h","line":316,"lineto":316,"args":[{"name":"rebase","type":"git_rebase *","comment":"The rebase object"}],"argline":"git_rebase *rebase","sig":"git_rebase *","return":{"type":"void","comment":null},"description":"<p>Frees the <code>git_rebase</code> object.</p>\n","comments":"","group":"rebase"},"git_refdb_new":{"type":"function","file":"refdb.h","line":35,"lineto":35,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database with no backends.</p>\n","comments":"<p>Before the Ref DB can be used for read/writing, a custom database backend must be manually set using <code>git_refdb_set_backend()</code></p>\n","group":"refdb"},"git_refdb_open":{"type":"function","file":"refdb.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_refdb **","comment":"location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed."},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new reference database and automatically add\n the default backends:</p>\n","comments":"<ul>\n<li>git_refdb_dir: read and write loose and packed refs      from disk, assuming the repository dir as the folder</li>\n</ul>\n","group":"refdb"},"git_refdb_compress":{"type":"function","file":"refdb.h","line":56,"lineto":56,"args":[{"name":"refdb","type":"git_refdb *","comment":null}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"int","comment":null},"description":"<p>Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  For on-disk reference\n databases, for example, this may pack all loose references.</p>\n","comments":"","group":"refdb"},"git_refdb_free":{"type":"function","file":"refdb.h","line":63,"lineto":63,"args":[{"name":"refdb","type":"git_refdb *","comment":"reference database pointer or NULL"}],"argline":"git_refdb *refdb","sig":"git_refdb *","return":{"type":"void","comment":null},"description":"<p>Close an open reference database.</p>\n","comments":"","group":"refdb"},"git_reflog_read":{"type":"function","file":"reflog.h","line":38,"lineto":38,"args":[{"name":"out","type":"git_reflog **","comment":"pointer to reflog"},{"name":"repo","type":"git_repository *","comment":"the repostiory"},{"name":"name","type":"const char *","comment":"reference to look up"}],"argline":"git_reflog **out, git_repository *repo, const char *name","sig":"git_reflog **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Read the reflog for the given reference</p>\n","comments":"<p>If there is no reflog file for the given reference yet, an empty reflog object will be returned.</p>\n\n<p>The reflog must be freed manually by using git_reflog_free().</p>\n","group":"reflog"},"git_reflog_write":{"type":"function","file":"reflog.h","line":47,"lineto":47,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write an existing in-memory reflog object back to disk\n using an atomic file lock.</p>\n","comments":"","group":"reflog"},"git_reflog_append":{"type":"function","file":"reflog.h","line":60,"lineto":60,"args":[{"name":"reflog","type":"git_reflog *","comment":"an existing reflog object"},{"name":"id","type":"const git_oid *","comment":"the OID the reference is now pointing to"},{"name":"committer","type":"const git_signature *","comment":"the signature of the committer"},{"name":"msg","type":"const char *","comment":"the reflog message"}],"argline":"git_reflog *reflog, const git_oid *id, const git_signature *committer, const char *msg","sig":"git_reflog *::const git_oid *::const git_signature *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new entry to the in-memory reflog.</p>\n","comments":"<p><code>msg</code> is optional and can be NULL.</p>\n","group":"reflog"},"git_reflog_rename":{"type":"function","file":"reflog.h","line":75,"lineto":75,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"old_name","type":"const char *","comment":"the old name of the reference"},{"name":"name","type":"const char *","comment":"the new name of the reference"}],"argline":"git_repository *repo, const char *old_name, const char *name","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Rename a reflog</p>\n","comments":"<p>The reflog to be renamed is expected to already exist</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_create_symbolic()</code> for rules about valid names.</p>\n","group":"reflog"},"git_reflog_delete":{"type":"function","file":"reflog.h","line":84,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"name","type":"const char *","comment":"the reflog to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete the reflog for the given reference</p>\n","comments":"","group":"reflog"},"git_reflog_entrycount":{"type":"function","file":"reflog.h","line":92,"lineto":92,"args":[{"name":"reflog","type":"git_reflog *","comment":"the previously loaded reflog"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"size_t","comment":" the number of log entries"},"description":"<p>Get the number of log entries in a reflog</p>\n","comments":"","group":"reflog"},"git_reflog_entry_byindex":{"type":"function","file":"reflog.h","line":105,"lineto":105,"args":[{"name":"reflog","type":"const git_reflog *","comment":"a previously loaded reflog"},{"name":"idx","type":"size_t","comment":"the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."}],"argline":"const git_reflog *reflog, size_t idx","sig":"const git_reflog *::size_t","return":{"type":"const git_reflog_entry *","comment":" the entry; NULL if not found"},"description":"<p>Lookup an entry by its index</p>\n","comments":"<p>Requesting the reflog entry with an index of 0 (zero) will return the most recently created entry.</p>\n","group":"reflog"},"git_reflog_drop":{"type":"function","file":"reflog.h","line":124,"lineto":127,"args":[{"name":"reflog","type":"git_reflog *","comment":"a previously loaded reflog."},{"name":"idx","type":"size_t","comment":"the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`."},{"name":"rewrite_previous_entry","type":"int","comment":"1 to rewrite the history; 0 otherwise."}],"argline":"git_reflog *reflog, size_t idx, int rewrite_previous_entry","sig":"git_reflog *::size_t::int","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code."},"description":"<p>Remove an entry from the reflog by its index</p>\n","comments":"<p>To ensure there&#39;s no gap in the log history, set <code>rewrite_previous_entry</code> param value to 1. When deleting entry <code>n</code>, member old_oid of entry <code>n-1</code> (if any) will be updated with the value of member new_oid of entry <code>n+1</code>.</p>\n","group":"reflog"},"git_reflog_entry_id_old":{"type":"function","file":"reflog.h","line":135,"lineto":135,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the old oid"},"description":"<p>Get the old oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_id_new":{"type":"function","file":"reflog.h","line":143,"lineto":143,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_oid *","comment":" the new oid at this time"},"description":"<p>Get the new oid</p>\n","comments":"","group":"reflog"},"git_reflog_entry_committer":{"type":"function","file":"reflog.h","line":151,"lineto":151,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const git_signature *","comment":" the committer"},"description":"<p>Get the committer of this entry</p>\n","comments":"","group":"reflog"},"git_reflog_entry_message":{"type":"function","file":"reflog.h","line":159,"lineto":159,"args":[{"name":"entry","type":"const git_reflog_entry *","comment":"a reflog entry"}],"argline":"const git_reflog_entry *entry","sig":"const git_reflog_entry *","return":{"type":"const char *","comment":" the log msg"},"description":"<p>Get the log message</p>\n","comments":"","group":"reflog"},"git_reflog_free":{"type":"function","file":"reflog.h","line":166,"lineto":166,"args":[{"name":"reflog","type":"git_reflog *","comment":"reflog to free"}],"argline":"git_reflog *reflog","sig":"git_reflog *","return":{"type":"void","comment":null},"description":"<p>Free the reflog</p>\n","comments":"","group":"reflog"},"git_reference_lookup":{"type":"function","file":"refs.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the looked-up reference"},{"name":"repo","type":"git_repository *","comment":"the repository to look up the reference"},{"name":"name","type":"const char *","comment":"the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_reference **out, git_repository *repo, const char *name","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name in a repository.</p>\n","comments":"<p>The returned reference must be freed by the user.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.1/general.html#git_reference_lookup-55"]}},"git_reference_name_to_id":{"type":"function","file":"refs.h","line":54,"lineto":55,"args":[{"name":"out","type":"git_oid *","comment":"Pointer to oid to be filled in"},{"name":"repo","type":"git_repository *","comment":"The repository in which to look up the reference"},{"name":"name","type":"const char *","comment":"The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)"}],"argline":"git_oid *out, git_repository *repo, const char *name","sig":"git_oid *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code."},"description":"<p>Lookup a reference by name and resolve immediately to OID.</p>\n","comments":"<p>This function provides a quick way to resolve a reference name straight through to the object id that it refers to.  This avoids having to allocate or free any <code>git_reference</code> objects for simple situations.</p>\n\n<p>The name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_dwim":{"type":"function","file":"refs.h","line":68,"lineto":68,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"shorthand","type":"const char *","comment":"the short name for the reference"}],"argline":"git_reference **out, git_repository *repo, const char *shorthand","sig":"git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a reference by DWIMing its short name</p>\n","comments":"<p>Apply the git precendence rules to the given shorthand to determine which reference the user is referring to.</p>\n","group":"reference"},"git_reference_symbolic_create_matching":{"type":"function","file":"refs.h","line":109,"lineto":109,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_value","type":"const char *","comment":"The expected value of the reference when updating"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *current_value, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code"},"description":"<p>Conditionally create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_value</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_symbolic_create":{"type":"function","file":"refs.h","line":145,"lineto":145,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"target","type":"const char *","comment":"The target of the reference"},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const char *target, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"<p>A symbolic reference is a reference name that refers to another reference name.  If the other name moves, the symbolic name will move, too.  As a simple example, the &quot;HEAD&quot; reference might refer to &quot;refs/heads/master&quot; while on the &quot;master&quot; branch of a repository.</p>\n\n<p>The symbolic reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create":{"type":"function","file":"refs.h","line":182,"lineto":182,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new direct reference.</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_create_matching":{"type":"function","file":"refs.h","line":225,"lineto":225,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"repo","type":"git_repository *","comment":"Repository where that reference will live"},{"name":"name","type":"const char *","comment":"The name of the reference"},{"name":"id","type":"const git_oid *","comment":"The object id pointed to by the reference."},{"name":"force","type":"int","comment":"Overwrite existing references"},{"name":"current_id","type":"const git_oid *","comment":"The expected value of the reference at the time of update"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force, const git_oid *current_id, const char *log_message","sig":"git_reference **::git_repository *::const char *::const git_oid *::int::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Conditionally create new direct reference</p>\n","comments":"<p>A direct reference (also called an object id reference) refers directly to a specific object id (a.k.a. OID or SHA) in the repository.  The id permanently refers to the object (although the reference itself can be moved).  For example, in libgit2 the direct ref &quot;refs/tags/v0.17.0&quot; refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.</p>\n\n<p>The direct reference will be created in the repository and written to the disk.  The generated reference object must be freed by the user.</p>\n\n<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n\n<p>This function will return an error if a reference already exists with the given name unless <code>force</code> is true, in which case it will be overwritten.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n\n<p>It will return GIT_EMODIFIED if the reference&#39;s value at the time of updating does not match the one passed through <code>current_id</code> (i.e. if the ref has changed since the user read it).</p>\n","group":"reference"},"git_reference_target":{"type":"function","file":"refs.h","line":240,"lineto":240,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Get the OID pointed to by a direct reference.</p>\n","comments":"<p>Only available if the reference is direct (i.e. an object id reference, not a symbolic one).</p>\n\n<p>To find the OID of a symbolic ref, call <code>git_reference_resolve()</code> and then this function (or maybe use <code>git_reference_name_to_id()</code> to directly resolve a reference name all the way through to an OID).</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.1/general.html#git_reference_target-56"]}},"git_reference_target_peel":{"type":"function","file":"refs.h","line":251,"lineto":251,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const git_oid *","comment":" a pointer to the oid if available, NULL otherwise"},"description":"<p>Return the peeled OID target of this reference.</p>\n","comments":"<p>This peeled OID only applies to direct references that point to a hard Tag object: it is the result of peeling such Tag.</p>\n","group":"reference"},"git_reference_symbolic_target":{"type":"function","file":"refs.h","line":261,"lineto":261,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" a pointer to the name if available, NULL otherwise"},"description":"<p>Get full name to the reference pointed to by a symbolic reference.</p>\n","comments":"<p>Only available if the reference is symbolic.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.1/general.html#git_reference_symbolic_target-57"]}},"git_reference_type":{"type":"function","file":"refs.h","line":271,"lineto":271,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_ref_t","comment":" the type"},"description":"<p>Get the type of a reference.</p>\n","comments":"<p>Either direct (GIT_REF_OID) or symbolic (GIT_REF_SYMBOLIC)</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.1/general.html#git_reference_type-58"]}},"git_reference_name":{"type":"function","file":"refs.h","line":281,"lineto":281,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the full name for the ref"},"description":"<p>Get the full name of a reference.</p>\n","comments":"<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_resolve":{"type":"function","file":"refs.h","line":299,"lineto":299,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the peeled reference"},{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"git_reference **out, const git_reference *ref","sig":"git_reference **::const git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a symbolic reference to a direct reference.</p>\n","comments":"<p>This method iteratively peels a symbolic reference until it resolves to a direct reference to an OID.</p>\n\n<p>The peeled reference is returned in the <code>resolved_ref</code> argument, and must be freed manually once it&#39;s no longer needed.</p>\n\n<p>If a direct reference is passed as an argument, a copy of that reference is returned. This copy must be manually freed too.</p>\n","group":"reference"},"git_reference_owner":{"type":"function","file":"refs.h","line":307,"lineto":307,"args":[{"name":"ref","type":"const git_reference *","comment":"The reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"git_repository *","comment":" a pointer to the repo"},"description":"<p>Get the repository where a reference resides.</p>\n","comments":"","group":"reference"},"git_reference_symbolic_set_target":{"type":"function","file":"refs.h","line":329,"lineto":333,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"target","type":"const char *","comment":"The new target for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const char *target, const char *log_message","sig":"git_reference **::git_reference *::const char *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Create a new reference with the same name as the given reference but a\n different symbolic target. The reference must be a symbolic reference,\n otherwise this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n\n<p>The target name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>The message for the reflog will be ignored if the reference does not belong in the standard set (HEAD, branches and remote-tracking branches) and and it does not have a reflog.</p>\n","group":"reference"},"git_reference_set_target":{"type":"function","file":"refs.h","line":349,"lineto":353,"args":[{"name":"out","type":"git_reference **","comment":"Pointer to the newly created reference"},{"name":"ref","type":"git_reference *","comment":"The reference"},{"name":"id","type":"const git_oid *","comment":"The new target OID for the reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **out, git_reference *ref, const git_oid *id, const char *log_message","sig":"git_reference **::git_reference *::const git_oid *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code"},"description":"<p>Conditionally create a new reference with the same name as the given reference but a\n different OID target. The reference must be a direct reference, otherwise\n this will fail.</p>\n","comments":"<p>The new reference will be written to disk, overwriting the given reference.</p>\n","group":"reference"},"git_reference_rename":{"type":"function","file":"refs.h","line":378,"lineto":383,"args":[{"name":"new_ref","type":"git_reference **","comment":null},{"name":"ref","type":"git_reference *","comment":"The reference to rename"},{"name":"new_name","type":"const char *","comment":"The new name for the reference"},{"name":"force","type":"int","comment":"Overwrite an existing reference"},{"name":"log_message","type":"const char *","comment":"The one line long message to be appended to the reflog"}],"argline":"git_reference **new_ref, git_reference *ref, const char *new_name, int force, const char *log_message","sig":"git_reference **::git_reference *::const char *::int::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Rename an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.</p>\n\n<p>The new name will be checked for validity. See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n\n<p>If the <code>force</code> flag is not enabled, and there&#39;s already a reference with the given name, the renaming will fail.</p>\n\n<p>IMPORTANT: The user needs to write a proper reflog entry if the reflog is enabled for the repository. We only rename the reflog if it exists.</p>\n","group":"reference"},"git_reference_delete":{"type":"function","file":"refs.h","line":398,"lineto":398,"args":[{"name":"ref","type":"git_reference *","comment":"The reference to remove"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"int","comment":" 0, GIT_EMODIFIED or an error code"},"description":"<p>Delete an existing reference.</p>\n","comments":"<p>This method works for both direct and symbolic references.  The reference will be immediately removed on disk but the memory will not be freed. Callers must call <code>git_reference_free</code>.</p>\n\n<p>This function will return an error if the reference has changed from the time it was looked up.</p>\n","group":"reference"},"git_reference_remove":{"type":"function","file":"refs.h","line":409,"lineto":409,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"name","type":"const char *","comment":"The reference to remove"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Delete an existing reference by name</p>\n","comments":"<p>This method removes the named reference from the repository without looking at its old value.</p>\n","group":"reference"},"git_reference_list":{"type":"function","file":"refs.h","line":423,"lineto":423,"args":[{"name":"array","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe reference names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"}],"argline":"git_strarray *array, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the references that can be found in a repository.</p>\n","comments":"<p>The string array will be filled with the names of all references; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free()</code>.</p>\n","group":"reference","examples":{"general.c":["ex/v0.25.1/general.html#git_reference_list-59"]}},"git_reference_foreach":{"type":"function","file":"refs.h","line":441,"lineto":444,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on each reference in the repository.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the reference object and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_foreach_name":{"type":"function","file":"refs.h","line":459,"lineto":462,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref name"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Perform a callback on the fully-qualified name of each reference.</p>\n","comments":"<p>The <code>callback</code> function will be called for each reference in the repository, receiving the name of the reference and the <code>payload</code> value passed to this method.  Returning a non-zero value from the callback will terminate the iteration.</p>\n","group":"reference"},"git_reference_dup":{"type":"function","file":"refs.h","line":473,"lineto":473,"args":[{"name":"dest","type":"git_reference **","comment":"pointer where to store the copy"},{"name":"source","type":"git_reference *","comment":"object to copy"}],"argline":"git_reference **dest, git_reference *source","sig":"git_reference **::git_reference *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing reference.</p>\n","comments":"<p>Call <code>git_reference_free</code> to free the data.</p>\n","group":"reference"},"git_reference_free":{"type":"function","file":"refs.h","line":480,"lineto":480,"args":[{"name":"ref","type":"git_reference *","comment":"git_reference"}],"argline":"git_reference *ref","sig":"git_reference *","return":{"type":"void","comment":null},"description":"<p>Free the given reference.</p>\n","comments":"","group":"reference","examples":{"status.c":["ex/v0.25.1/status.html#git_reference_free-3"]}},"git_reference_cmp":{"type":"function","file":"refs.h","line":489,"lineto":491,"args":[{"name":"ref1","type":"const git_reference *","comment":"The first git_reference"},{"name":"ref2","type":"const git_reference *","comment":"The second git_reference"}],"argline":"const git_reference *ref1, const git_reference *ref2","sig":"const git_reference *::const git_reference *","return":{"type":"int","comment":" 0 if the same, else a stable but meaningless ordering."},"description":"<p>Compare two references.</p>\n","comments":"","group":"reference"},"git_reference_iterator_new":{"type":"function","file":"refs.h","line":500,"lineto":502,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_reference_iterator **out, git_repository *repo","sig":"git_reference_iterator **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references</p>\n","comments":"","group":"reference"},"git_reference_iterator_glob_new":{"type":"function","file":"refs.h","line":513,"lineto":516,"args":[{"name":"out","type":"git_reference_iterator **","comment":"pointer in which to store the iterator"},{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"glob","type":"const char *","comment":"the glob to match against the reference names"}],"argline":"git_reference_iterator **out, git_repository *repo, const char *glob","sig":"git_reference_iterator **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an iterator for the repo&#39;s references that match the\n specified glob</p>\n","comments":"","group":"reference"},"git_reference_next":{"type":"function","file":"refs.h","line":525,"lineto":525,"args":[{"name":"out","type":"git_reference **","comment":"pointer in which to store the reference"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"git_reference **out, git_reference_iterator *iter","sig":"git_reference **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference</p>\n","comments":"","group":"reference"},"git_reference_next_name":{"type":"function","file":"refs.h","line":538,"lineto":538,"args":[{"name":"out","type":"const char **","comment":"pointer in which to store the string"},{"name":"iter","type":"git_reference_iterator *","comment":"the iterator"}],"argline":"const char **out, git_reference_iterator *iter","sig":"const char **::git_reference_iterator *","return":{"type":"int","comment":" 0, GIT_ITEROVER if there are no more; or an error code"},"description":"<p>Get the next reference&#39;s name</p>\n","comments":"<p>This function is provided for convenience in case only the names are interesting as it avoids the allocation of the <code>git_reference</code> object which <code>git_reference_next()</code> needs.</p>\n","group":"reference"},"git_reference_iterator_free":{"type":"function","file":"refs.h","line":545,"lineto":545,"args":[{"name":"iter","type":"git_reference_iterator *","comment":"the iterator to free"}],"argline":"git_reference_iterator *iter","sig":"git_reference_iterator *","return":{"type":"void","comment":null},"description":"<p>Free the iterator and its associated resources</p>\n","comments":"","group":"reference"},"git_reference_foreach_glob":{"type":"function","file":"refs.h","line":565,"lineto":569,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the refs"},{"name":"glob","type":"const char *","comment":"Pattern to match (fnmatch-style) against reference name."},{"name":"callback","type":"git_reference_foreach_name_cb","comment":"Function which will be called for every listed ref"},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback"}],"argline":"git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload","sig":"git_repository *::const char *::git_reference_foreach_name_cb::void *","return":{"type":"int","comment":" 0 on success, GIT_EUSER on non-zero callback, or error code"},"description":"<p>Perform a callback on each reference in the repository whose name\n matches the given pattern.</p>\n","comments":"<p>This function acts like <code>git_reference_foreach()</code> with an additional pattern match being applied to the reference name before issuing the callback function.  See that function for more information.</p>\n\n<p>The pattern is matched using fnmatch or &quot;glob&quot; style where a &#39;*&#39; matches any sequence of letters, a &#39;?&#39; matches any letter, and square brackets can be used to define character ranges (such as &quot;[0-9]&quot; for digits).</p>\n","group":"reference"},"git_reference_has_log":{"type":"function","file":"refs.h","line":579,"lineto":579,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 when no reflog can be found, 1 when it exists;\n otherwise an error code."},"description":"<p>Check if a reflog exists for the specified reference.</p>\n","comments":"","group":"reference"},"git_reference_ensure_log":{"type":"function","file":"refs.h","line":591,"lineto":591,"args":[{"name":"repo","type":"git_repository *","comment":"the repository"},{"name":"refname","type":"const char *","comment":"the reference's name"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code."},"description":"<p>Ensure there is a reflog for a particular reference.</p>\n","comments":"<p>Make sure that successive updates to the reference will append to its log.</p>\n","group":"reference"},"git_reference_is_branch":{"type":"function","file":"refs.h","line":601,"lineto":601,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/heads\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a local branch.</p>\n","comments":"","group":"reference"},"git_reference_is_remote":{"type":"function","file":"refs.h","line":611,"lineto":611,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a remote tracking branch</p>\n","comments":"","group":"reference"},"git_reference_is_tag":{"type":"function","file":"refs.h","line":621,"lineto":621,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/tags\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a tag</p>\n","comments":"","group":"reference"},"git_reference_is_note":{"type":"function","file":"refs.h","line":631,"lineto":631,"args":[{"name":"ref","type":"const git_reference *","comment":"A git reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"int","comment":" 1 when the reference lives in the refs/notes\n namespace; 0 otherwise."},"description":"<p>Check if a reference is a note</p>\n","comments":"","group":"reference"},"git_reference_normalize_name":{"type":"function","file":"refs.h","line":687,"lineto":691,"args":[{"name":"buffer_out","type":"char *","comment":"User allocated buffer to store normalized name"},{"name":"buffer_size","type":"size_t","comment":"Size of buffer_out"},{"name":"name","type":"const char *","comment":"Reference name to be checked."},{"name":"flags","type":"unsigned int","comment":"Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above."}],"argline":"char *buffer_out, size_t buffer_size, const char *name, unsigned int flags","sig":"char *::size_t::const char *::unsigned int","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code."},"description":"<p>Normalize reference name and check validity.</p>\n","comments":"<p>This will normalize the reference name by removing any leading slash &#39;/&#39; characters and collapsing runs of adjacent slashes between name components into a single slash.</p>\n\n<p>Once normalized, if the reference name is valid, it will be returned in the user allocated buffer.</p>\n\n<p>See <code>git_reference_symbolic_create()</code> for rules about valid names.</p>\n","group":"reference"},"git_reference_peel":{"type":"function","file":"refs.h","line":708,"lineto":711,"args":[{"name":"out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"ref","type":"git_reference *","comment":"The reference to be processed"},{"name":"type","type":"git_otype","comment":"The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY)."}],"argline":"git_object **out, git_reference *ref, git_otype type","sig":"git_object **::git_reference *::git_otype","return":{"type":"int","comment":" 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code"},"description":"<p>Recursively peel reference until object of the specified type is found.</p>\n","comments":"<p>The retrieved <code>peeled</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n\n<p>If you pass <code>GIT_OBJ_ANY</code> as the target type, then the object will be peeled until a non-tag object is met.</p>\n","group":"reference"},"git_reference_is_valid_name":{"type":"function","file":"refs.h","line":727,"lineto":727,"args":[{"name":"refname","type":"const char *","comment":"name to be checked."}],"argline":"const char *refname","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the reference name is well-formed.</p>\n","comments":"<p>Valid reference names must follow one of two patterns:</p>\n\n<ol>\n<li>Top-level names must contain only capital letters and underscores,    and must begin and end with a letter. (e.g. &quot;HEAD&quot;, &quot;ORIG_HEAD&quot;). 2. Names prefixed with &quot;refs/&quot; can be almost anything.  You must avoid    the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the    sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</li>\n</ol>\n","group":"reference"},"git_reference_shorthand":{"type":"function","file":"refs.h","line":741,"lineto":741,"args":[{"name":"ref","type":"const git_reference *","comment":"a reference"}],"argline":"const git_reference *ref","sig":"const git_reference *","return":{"type":"const char *","comment":" the human-readable version of the name"},"description":"<p>Get the reference&#39;s short name</p>\n","comments":"<p>This will transform the reference name into a name &quot;human-readable&quot; version. If no shortname is appropriate, it will return the full name.</p>\n\n<p>The memory is owned by the reference and must not be freed.</p>\n","group":"reference","examples":{"status.c":["ex/v0.25.1/status.html#git_reference_shorthand-4"]}},"git_refspec_src":{"type":"function","file":"refspec.h","line":30,"lineto":30,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's source specifier"},"description":"<p>Get the source specifier</p>\n","comments":"","group":"refspec"},"git_refspec_dst":{"type":"function","file":"refspec.h","line":38,"lineto":38,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":" the refspec's destination specifier"},"description":"<p>Get the destination specifier</p>\n","comments":"","group":"refspec"},"git_refspec_string":{"type":"function","file":"refspec.h","line":46,"lineto":46,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"const char *","comment":null},"description":"<p>Get the refspec&#39;s string</p>\n","comments":"","group":"refspec"},"git_refspec_force":{"type":"function","file":"refspec.h","line":54,"lineto":54,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"}],"argline":"const git_refspec *refspec","sig":"const git_refspec *","return":{"type":"int","comment":" 1 if force update has been set, 0 otherwise"},"description":"<p>Get the force update setting</p>\n","comments":"","group":"refspec"},"git_refspec_direction":{"type":"function","file":"refspec.h","line":62,"lineto":62,"args":[{"name":"spec","type":"const git_refspec *","comment":"refspec"}],"argline":"const git_refspec *spec","sig":"const git_refspec *","return":{"type":"git_direction","comment":" GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH"},"description":"<p>Get the refspec&#39;s direction.</p>\n","comments":"","group":"refspec"},"git_refspec_src_matches":{"type":"function","file":"refspec.h","line":71,"lineto":71,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s source descriptor matches a reference </p>\n","comments":"","group":"refspec"},"git_refspec_dst_matches":{"type":"function","file":"refspec.h","line":80,"lineto":80,"args":[{"name":"refspec","type":"const git_refspec *","comment":"the refspec"},{"name":"refname","type":"const char *","comment":"the name of the reference to check"}],"argline":"const git_refspec *refspec, const char *refname","sig":"const git_refspec *::const char *","return":{"type":"int","comment":" 1 if the refspec matches, 0 otherwise"},"description":"<p>Check if a refspec&#39;s destination descriptor matches a reference</p>\n","comments":"","group":"refspec"},"git_refspec_transform":{"type":"function","file":"refspec.h","line":90,"lineto":90,"args":[{"name":"out","type":"git_buf *","comment":"where to store the target name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a reference to its target following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_refspec_rtransform":{"type":"function","file":"refspec.h","line":100,"lineto":100,"args":[{"name":"out","type":"git_buf *","comment":"where to store the source reference name"},{"name":"spec","type":"const git_refspec *","comment":"the refspec"},{"name":"name","type":"const char *","comment":"the name of the reference to transform"}],"argline":"git_buf *out, const git_refspec *spec, const char *name","sig":"git_buf *::const git_refspec *::const char *","return":{"type":"int","comment":" 0, GIT_EBUFS or another error"},"description":"<p>Transform a target reference to its source reference following the refspec&#39;s rules</p>\n","comments":"","group":"refspec"},"git_remote_create":{"type":"function","file":"remote.h","line":38,"lineto":42,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url","sig":"git_remote **::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the default fetch refspec to the repository&#39;s configuration.</p>\n","comments":"","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_create-4"]}},"git_remote_create_with_fetchspec":{"type":"function","file":"remote.h","line":55,"lineto":60,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"fetch","type":"const char *","comment":"the remote fetch value"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, const char *fetch","sig":"git_remote **::git_repository *::const char *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Add a remote with the provided fetch refspec (or default if NULL) to the repository&#39;s\n configuration.</p>\n","comments":"","group":"remote"},"git_remote_create_anonymous":{"type":"function","file":"remote.h","line":73,"lineto":76,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote objects"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"url","type":"const char *","comment":"the remote repository's URL"}],"argline":"git_remote **out, git_repository *repo, const char *url","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an anonymous remote</p>\n","comments":"<p>Create a remote with the given url in-memory. You can use this when you have a URL instead of a remote&#39;s name.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_remote_create_anonymous-4"],"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_remote_create_anonymous-2"]}},"git_remote_lookup":{"type":"function","file":"remote.h","line":89,"lineto":89,"args":[{"name":"out","type":"git_remote **","comment":"pointer to the new remote object"},{"name":"repo","type":"git_repository *","comment":"the associated repository"},{"name":"name","type":"const char *","comment":"the remote's name"}],"argline":"git_remote **out, git_repository *repo, const char *name","sig":"git_remote **::git_repository *::const char *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code"},"description":"<p>Get the information for a particular remote</p>\n","comments":"<p>The name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_remote_lookup-5"],"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_remote_lookup-3"],"remote.c":["ex/v0.25.1/remote.html#git_remote_lookup-5"]}},"git_remote_dup":{"type":"function","file":"remote.h","line":101,"lineto":101,"args":[{"name":"dest","type":"git_remote **","comment":"pointer where to store the copy"},{"name":"source","type":"git_remote *","comment":"object to copy"}],"argline":"git_remote **dest, git_remote *source","sig":"git_remote **::git_remote *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing remote.  All internal strings are also\n duplicated. Callbacks are not duplicated.</p>\n","comments":"<p>Call <code>git_remote_free</code> to free the data.</p>\n","group":"remote"},"git_remote_owner":{"type":"function","file":"remote.h","line":109,"lineto":109,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_repository *","comment":" a pointer to the repository"},"description":"<p>Get the remote&#39;s repository</p>\n","comments":"","group":"remote"},"git_remote_name":{"type":"function","file":"remote.h","line":117,"lineto":117,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the name or NULL for in-memory remotes"},"description":"<p>Get the remote&#39;s name</p>\n","comments":"","group":"remote"},"git_remote_url":{"type":"function","file":"remote.h","line":128,"lineto":128,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url"},"description":"<p>Get the remote&#39;s url</p>\n","comments":"<p>If url.*.insteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_url-6"]}},"git_remote_pushurl":{"type":"function","file":"remote.h","line":139,"lineto":139,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"const char *","comment":" a pointer to the url or NULL if no special url for pushing is set"},"description":"<p>Get the remote&#39;s url for pushing</p>\n","comments":"<p>If url.*.pushInsteadOf has been configured for this URL, it will return the modified URL.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_pushurl-7"]}},"git_remote_set_url":{"type":"function","file":"remote.h","line":152,"lineto":152,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 or an error value"},"description":"<p>Set the remote&#39;s url in the configuration</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_set_url-8"]}},"git_remote_set_pushurl":{"type":"function","file":"remote.h","line":165,"lineto":165,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to perform the change"},{"name":"remote","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the url to set"}],"argline":"git_repository *repo, const char *remote, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s url for pushing in the configuration.</p>\n","comments":"<p>Remote objects already in memory will not be affected. This assumes the common case of a single-url remote and will otherwise return an error.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_set_pushurl-9"]}},"git_remote_add_fetch":{"type":"function","file":"remote.h","line":178,"lineto":178,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new fetch refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a fetch refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the fetch list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_fetch_refspecs":{"type":"function","file":"remote.h","line":189,"lineto":189,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of fetch refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_add_push":{"type":"function","file":"remote.h","line":202,"lineto":202,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to change the configuration"},{"name":"remote","type":"const char *","comment":"the name of the remote to change"},{"name":"refspec","type":"const char *","comment":"the new push refspec"}],"argline":"git_repository *repo, const char *remote, const char *refspec","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC if refspec is invalid or an error value"},"description":"<p>Add a push refspec to the remote&#39;s configuration</p>\n","comments":"<p>Add the given refspec to the push list in the configuration. No loaded remote instances will be affected.</p>\n","group":"remote"},"git_remote_get_push_refspecs":{"type":"function","file":"remote.h","line":213,"lineto":213,"args":[{"name":"array","type":"git_strarray *","comment":"pointer to the array in which to store the strings"},{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"git_strarray *array, const git_remote *remote","sig":"git_strarray *::const git_remote *","return":{"type":"int","comment":null},"description":"<p>Get the remote&#39;s list of push refspecs</p>\n","comments":"<p>The memory is owned by the user and should be freed with <code>git_strarray_free</code>.</p>\n","group":"remote"},"git_remote_refspec_count":{"type":"function","file":"remote.h","line":221,"lineto":221,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"size_t","comment":" the amount of refspecs configured in this remote"},"description":"<p>Get the number of refspecs for a remote</p>\n","comments":"","group":"remote"},"git_remote_get_refspec":{"type":"function","file":"remote.h","line":230,"lineto":230,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"},{"name":"n","type":"size_t","comment":"the refspec to get"}],"argline":"const git_remote *remote, size_t n","sig":"const git_remote *::size_t","return":{"type":"const git_refspec *","comment":" the nth refspec"},"description":"<p>Get a refspec from the remote</p>\n","comments":"","group":"remote"},"git_remote_connect":{"type":"function","file":"remote.h","line":247,"lineto":247,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to connect to"},{"name":"direction","type":"git_direction","comment":"GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"the callbacks to use for this connection"},{"name":"proxy_opts","type":"const git_proxy_options *","comment":"proxy settings"},{"name":"custom_headers","type":"const git_strarray *","comment":"extra HTTP headers to use in this connection"}],"argline":"git_remote *remote, git_direction direction, const git_remote_callbacks *callbacks, const git_proxy_options *proxy_opts, const git_strarray *custom_headers","sig":"git_remote *::git_direction::const git_remote_callbacks *::const git_proxy_options *::const git_strarray *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a connection to a remote</p>\n","comments":"<p>The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_remote_connect-4"]}},"git_remote_ls":{"type":"function","file":"remote.h","line":269,"lineto":269,"args":[{"name":"out","type":"const git_remote_head ***","comment":"pointer to the array"},{"name":"size","type":"size_t *","comment":"the number of remote heads"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"const git_remote_head ***out, size_t *size, git_remote *remote","sig":"const git_remote_head ***::size_t *::git_remote *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Get the remote repository&#39;s reference advertisement list</p>\n","comments":"<p>Get the list of references with which the server responds to a new connection.</p>\n\n<p>The remote (or more exactly its transport) must have connected to the remote repository. This list is available as soon as the connection to the remote is initiated and it remains available after disconnecting.</p>\n\n<p>The memory belongs to the remote. The pointer will be valid as long as a new connection is not initiated, but it is recommended that you make a copy in order to make use of the data.</p>\n","group":"remote","examples":{"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_remote_ls-5"]}},"git_remote_connected":{"type":"function","file":"remote.h","line":280,"lineto":280,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" 1 if it's connected, 0 otherwise."},"description":"<p>Check whether the remote is connected</p>\n","comments":"<p>Check whether the remote&#39;s underlying transport is connected to the remote host.</p>\n","group":"remote"},"git_remote_stop":{"type":"function","file":"remote.h","line":290,"lineto":290,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Cancel the operation</p>\n","comments":"<p>At certain points in its operation, the network code checks whether the operation has been cancelled and if so stops the operation.</p>\n","group":"remote"},"git_remote_disconnect":{"type":"function","file":"remote.h","line":299,"lineto":299,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to disconnect from"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Disconnect from the remote</p>\n","comments":"<p>Close the connection to the remote.</p>\n","group":"remote"},"git_remote_free":{"type":"function","file":"remote.h","line":309,"lineto":309,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to free"}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"void","comment":null},"description":"<p>Free the memory associated with a remote</p>\n","comments":"<p>This also disconnects from the remote, if the connection has not been closed yet (using git_remote_disconnect).</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_remote_free-6","ex/v0.25.1/network/fetch.html#git_remote_free-7"],"network/ls-remote.c":["ex/v0.25.1/network/ls-remote.html#git_remote_free-6"],"remote.c":["ex/v0.25.1/remote.html#git_remote_free-10"]}},"git_remote_list":{"type":"function","file":"remote.h","line":320,"lineto":320,"args":[{"name":"out","type":"git_strarray *","comment":"a string array which receives the names of the remotes"},{"name":"repo","type":"git_repository *","comment":"the repository to query"}],"argline":"git_strarray *out, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get a list of the configured remotes for a repo</p>\n","comments":"<p>The string array must be freed by the user.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_list-11"]}},"git_remote_init_callbacks":{"type":"function","file":"remote.h","line":473,"lineto":475,"args":[{"name":"opts","type":"git_remote_callbacks *","comment":"the `git_remote_callbacks` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`"}],"argline":"git_remote_callbacks *opts, unsigned int version","sig":"git_remote_callbacks *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_remote_callbacks</code> with default values. Equivalent to\n creating an instance with GIT_REMOTE_CALLBACKS_INIT.</p>\n","comments":"","group":"remote"},"git_fetch_init_options":{"type":"function","file":"remote.h","line":577,"lineto":579,"args":[{"name":"opts","type":"git_fetch_options *","comment":"the `git_fetch_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_FETCH_OPTIONS_VERSION` here."}],"argline":"git_fetch_options *opts, unsigned int version","sig":"git_fetch_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_fetch_options</code> with default values. Equivalent to\n creating an instance with GIT_FETCH_OPTIONS_INIT.</p>\n","comments":"","group":"fetch"},"git_push_init_options":{"type":"function","file":"remote.h","line":626,"lineto":628,"args":[{"name":"opts","type":"git_push_options *","comment":"the `git_push_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here."}],"argline":"git_push_options *opts, unsigned int version","sig":"git_push_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_push_options</code> with default values. Equivalent to\n creating an instance with GIT_PUSH_OPTIONS_INIT.</p>\n","comments":"","group":"push"},"git_remote_download":{"type":"function","file":"remote.h","line":646,"lineto":646,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n download. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_fetch_options *","comment":"the options to use for this fetch"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts","sig":"git_remote *::const git_strarray *::const git_fetch_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download and index the packfile</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, download and index the packfile.</p>\n\n<p>The .idx file will be created and both it and the packfile with be renamed to their final name.</p>\n","group":"remote"},"git_remote_upload":{"type":"function","file":"remote.h","line":660,"lineto":660,"args":[{"name":"remote","type":"git_remote *","comment":"the remote"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this negotiation and\n upload. Use NULL or an empty array to use the base refspecs"},{"name":"opts","type":"const git_push_options *","comment":"the options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a packfile and send it to the server</p>\n","comments":"<p>Connect to the remote if it hasn&#39;t been done yet, negotiate with the remote git which objects are missing, create a packfile with the missing objects and send it.</p>\n","group":"remote"},"git_remote_update_tips":{"type":"function","file":"remote.h","line":676,"lineto":681,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to update"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"pointer to the callback structure to use"},{"name":"update_fetchhead","type":"int","comment":"whether to write to FETCH_HEAD. Pass 1 to behave like git."},{"name":"download_tags","type":"git_remote_autotag_option_t","comment":"what the behaviour for downloading tags is for this fetch. This is\n ignored for push. This must be the same value passed to `git_remote_download()`."},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If\n NULL and fetching, the default is \"fetch \n<name\n>\", where \n<name\n> is\n the name of the remote (or its url, for in-memory remotes). This\n parameter is ignored when pushing."}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks, int update_fetchhead, git_remote_autotag_option_t download_tags, const char *reflog_message","sig":"git_remote *::const git_remote_callbacks *::int::git_remote_autotag_option_t::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Update the tips to the new state</p>\n","comments":"","group":"remote"},"git_remote_fetch":{"type":"function","file":"remote.h","line":697,"lineto":701,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to fetch from"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for this fetch. Pass NULL or an\n                 empty array to use the base refspecs."},{"name":"opts","type":"const git_fetch_options *","comment":"options to use for this fetch"},{"name":"reflog_message","type":"const char *","comment":"The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\""}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_fetch_options *opts, const char *reflog_message","sig":"git_remote *::const git_strarray *::const git_fetch_options *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Download new data and update tips</p>\n","comments":"<p>Convenience function to connect to a remote, download the data, disconnect and update the remote-tracking branches.</p>\n","group":"remote","examples":{"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_remote_fetch-8"]}},"git_remote_prune":{"type":"function","file":"remote.h","line":710,"lineto":710,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to prune"},{"name":"callbacks","type":"const git_remote_callbacks *","comment":"callbacks to use for this prune"}],"argline":"git_remote *remote, const git_remote_callbacks *callbacks","sig":"git_remote *::const git_remote_callbacks *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Prune tracking refs that are no longer present on remote</p>\n","comments":"","group":"remote"},"git_remote_push":{"type":"function","file":"remote.h","line":722,"lineto":724,"args":[{"name":"remote","type":"git_remote *","comment":"the remote to push to"},{"name":"refspecs","type":"const git_strarray *","comment":"the refspecs to use for pushing. If none are\n passed, the configured refspecs will be used"},{"name":"opts","type":"const git_push_options *","comment":"options to use for this push"}],"argline":"git_remote *remote, const git_strarray *refspecs, const git_push_options *opts","sig":"git_remote *::const git_strarray *::const git_push_options *","return":{"type":"int","comment":null},"description":"<p>Perform a push</p>\n","comments":"<p>Peform all the steps from a push.</p>\n","group":"remote"},"git_remote_stats":{"type":"function","file":"remote.h","line":729,"lineto":729,"args":[{"name":"remote","type":"git_remote *","comment":null}],"argline":"git_remote *remote","sig":"git_remote *","return":{"type":"const git_transfer_progress *","comment":null},"description":"<p>Get the statistics structure that is filled in by the fetch operation.</p>\n","comments":"","group":"remote","examples":{"network/fetch.c":["ex/v0.25.1/network/fetch.html#git_remote_stats-9"]}},"git_remote_autotag":{"type":"function","file":"remote.h","line":737,"lineto":737,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"git_remote_autotag_option_t","comment":" the auto-follow setting"},"description":"<p>Retrieve the tag auto-follow setting</p>\n","comments":"","group":"remote"},"git_remote_set_autotag":{"type":"function","file":"remote.h","line":749,"lineto":749,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to make the change"},{"name":"remote","type":"const char *","comment":"the name of the remote"},{"name":"value","type":"git_remote_autotag_option_t","comment":"the new value to take."}],"argline":"git_repository *repo, const char *remote, git_remote_autotag_option_t value","sig":"git_repository *::const char *::git_remote_autotag_option_t","return":{"type":"int","comment":null},"description":"<p>Set the remote&#39;s tag following setting.</p>\n","comments":"<p>The change will be made in the configuration. No loaded remotes will be affected.</p>\n","group":"remote"},"git_remote_prune_refs":{"type":"function","file":"remote.h","line":756,"lineto":756,"args":[{"name":"remote","type":"const git_remote *","comment":"the remote to query"}],"argline":"const git_remote *remote","sig":"const git_remote *","return":{"type":"int","comment":" the ref-prune setting"},"description":"<p>Retrieve the ref-prune setting</p>\n","comments":"","group":"remote"},"git_remote_rename":{"type":"function","file":"remote.h","line":778,"lineto":782,"args":[{"name":"problems","type":"git_strarray *","comment":"non-default refspecs cannot be renamed and will be\n stored here for further processing by the caller. Always free this\n strarray on successful return."},{"name":"repo","type":"git_repository *","comment":"the repository in which to rename"},{"name":"name","type":"const char *","comment":"the current name of the remote"},{"name":"new_name","type":"const char *","comment":"the new name the remote should bear"}],"argline":"git_strarray *problems, git_repository *repo, const char *name, const char *new_name","sig":"git_strarray *::git_repository *::const char *::const char *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>Give the remote a new name</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote are updated.</p>\n\n<p>The new name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n\n<p>No loaded instances of a the remote with the old name will change their name or their list of refspecs.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_rename-12"]}},"git_remote_is_valid_name":{"type":"function","file":"remote.h","line":790,"lineto":790,"args":[{"name":"remote_name","type":"const char *","comment":"name to be checked."}],"argline":"const char *remote_name","sig":"const char *","return":{"type":"int","comment":" 1 if the reference name is acceptable; 0 if it isn't"},"description":"<p>Ensure the remote name is well-formed.</p>\n","comments":"","group":"remote"},"git_remote_delete":{"type":"function","file":"remote.h","line":802,"lineto":802,"args":[{"name":"repo","type":"git_repository *","comment":"the repository in which to act"},{"name":"name","type":"const char *","comment":"the name of the remove to delete"}],"argline":"git_repository *repo, const char *name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code."},"description":"<p>Delete an existing persisted remote.</p>\n","comments":"<p>All remote-tracking branches and configuration settings for the remote will be removed.</p>\n","group":"remote","examples":{"remote.c":["ex/v0.25.1/remote.html#git_remote_delete-13"]}},"git_remote_default_branch":{"type":"function","file":"remote.h","line":820,"lineto":820,"args":[{"name":"out","type":"git_buf *","comment":"the buffern in which to store the reference name"},{"name":"remote","type":"git_remote *","comment":"the remote"}],"argline":"git_buf *out, git_remote *remote","sig":"git_buf *::git_remote *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if the remote does not have any references\n or none of them point to HEAD's commit, or an error message."},"description":"<p>Retrieve the name of the remote&#39;s default branch</p>\n","comments":"<p>The default branch of a repository is the branch which HEAD points to. If the remote does not support reporting this information directly, it performs the guess as git does; that is, if there are multiple branches which point to the same commit, the first one is chosen. If the master branch is a candidate, it wins.</p>\n\n<p>This function must only be called after connecting.</p>\n","group":"remote"},"git_repository_open":{"type":"function","file":"repository.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be opened"},{"name":"path","type":"const char *","comment":"the path to the repository"}],"argline":"git_repository **out, const char *path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Open a git repository.</p>\n","comments":"<p>The &#39;path&#39; argument must point to either a git repository folder, or an existing work dir.</p>\n\n<p>The method will automatically detect if &#39;path&#39; is a normal or bare repository or fail is &#39;path&#39; is neither.</p>\n","group":"repository","examples":{"general.c":["ex/v0.25.1/general.html#git_repository_open-60"],"network/git2.c":["ex/v0.25.1/network/git2.html#git_repository_open-5"],"remote.c":["ex/v0.25.1/remote.html#git_repository_open-14"]}},"git_repository_wrap_odb":{"type":"function","file":"repository.h","line":50,"lineto":50,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo"},{"name":"odb","type":"git_odb *","comment":"the object database to wrap"}],"argline":"git_repository **out, git_odb *odb","sig":"git_repository **::git_odb *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a &quot;fake&quot; repository to wrap an object database</p>\n","comments":"<p>Create a repository object to wrap an object database to be used with the API when all you have is an object database. This doesn&#39;t have any paths associated with it, so use with care.</p>\n","group":"repository"},"git_repository_discover":{"type":"function","file":"repository.h","line":78,"lineto":82,"args":[{"name":"out","type":"git_buf *","comment":"A pointer to a user-allocated git_buf which will contain\n the found path."},{"name":"start_path","type":"const char *","comment":"The base path where the lookup starts."},{"name":"across_fs","type":"int","comment":"If true, then the lookup will not stop when a\n filesystem device change is detected while exploring parent directories."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR separated list of\n absolute symbolic link free paths. The lookup will stop when any\n of this paths is reached. Note that the lookup always performs on\n start_path no matter start_path appears in ceiling_dirs ceiling_dirs\n might be NULL (which is equivalent to an empty string)"}],"argline":"git_buf *out, const char *start_path, int across_fs, const char *ceiling_dirs","sig":"git_buf *::const char *::int::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Look for a git repository and copy its path in the given buffer.\n The lookup start from base_path and walk across parent directories\n if nothing has been found. The lookup ends when the first repository\n is found, or when reaching a directory referenced in ceiling_dirs\n or when the filesystem changes (in case across_fs is true).</p>\n","comments":"<p>The method will automatically detect if the repository is bare (if there is a repository).</p>\n","group":"repository","examples":{"remote.c":["ex/v0.25.1/remote.html#git_repository_discover-15"]}},"git_repository_open_ext":{"type":"function","file":"repository.h","line":141,"lineto":145,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened."},{"name":"path","type":"const char *","comment":"Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository. May be NULL if\n        flags is GIT_REPOSITORY_OPEN_FROM_ENV."},{"name":"flags","type":"unsigned int","comment":"A combination of the GIT_REPOSITORY_OPEN flags above."},{"name":"ceiling_dirs","type":"const char *","comment":"A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate."}],"argline":"git_repository **out, const char *path, unsigned int flags, const char *ceiling_dirs","sig":"git_repository **::const char *::unsigned int::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors)."},"description":"<p>Find and open a repository with extended controls.</p>\n","comments":"","group":"repository","examples":{"blame.c":["ex/v0.25.1/blame.html#git_repository_open_ext-24"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_repository_open_ext-31"],"describe.c":["ex/v0.25.1/describe.html#git_repository_open_ext-6"],"diff.c":["ex/v0.25.1/diff.html#git_repository_open_ext-15"],"log.c":["ex/v0.25.1/log.html#git_repository_open_ext-44","ex/v0.25.1/log.html#git_repository_open_ext-45"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_repository_open_ext-16"],"status.c":["ex/v0.25.1/status.html#git_repository_open_ext-5"],"tag.c":["ex/v0.25.1/tag.html#git_repository_open_ext-11"]}},"git_repository_open_bare":{"type":"function","file":"repository.h","line":158,"lineto":158,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be opened."},{"name":"bare_path","type":"const char *","comment":"Direct path to the bare repository"}],"argline":"git_repository **out, const char *bare_path","sig":"git_repository **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Open a bare repository on the serverside.</p>\n","comments":"<p>This is a fast open for bare repositories that will come in handy if you&#39;re e.g. hosting git repositories and need to access them efficiently</p>\n","group":"repository"},"git_repository_free":{"type":"function","file":"repository.h","line":171,"lineto":171,"args":[{"name":"repo","type":"git_repository *","comment":"repository handle to close. If NULL nothing occurs."}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Free a previously allocated repository</p>\n","comments":"<p>Note that after a repository is free&#39;d, all the objects it has spawned will still exist until they are manually closed by the user with <code>git_object_free</code>, but accessing any of the attributes of an object without a backing repository will result in undefined behavior</p>\n","group":"repository","examples":{"blame.c":["ex/v0.25.1/blame.html#git_repository_free-25"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_repository_free-32"],"describe.c":["ex/v0.25.1/describe.html#git_repository_free-7"],"diff.c":["ex/v0.25.1/diff.html#git_repository_free-16"],"general.c":["ex/v0.25.1/general.html#git_repository_free-61"],"init.c":["ex/v0.25.1/init.html#git_repository_free-6"],"log.c":["ex/v0.25.1/log.html#git_repository_free-46"],"network/clone.c":["ex/v0.25.1/network/clone.html#git_repository_free-3"],"network/git2.c":["ex/v0.25.1/network/git2.html#git_repository_free-6"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_repository_free-17"],"status.c":["ex/v0.25.1/status.html#git_repository_free-6"],"tag.c":["ex/v0.25.1/tag.html#git_repository_free-12"]}},"git_repository_init":{"type":"function","file":"repository.h","line":188,"lineto":191,"args":[{"name":"out","type":"git_repository **","comment":"pointer to the repo which will be created or reinitialized"},{"name":"path","type":"const char *","comment":"the path to the repository"},{"name":"is_bare","type":"unsigned int","comment":"if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created."}],"argline":"git_repository **out, const char *path, unsigned int is_bare","sig":"git_repository **::const char *::unsigned int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Creates a new Git repository in the given folder.</p>\n","comments":"<p>TODO:  - Reinit the repository</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.1/init.html#git_repository_init-7"]}},"git_repository_init_init_options":{"type":"function","file":"repository.h","line":300,"lineto":302,"args":[{"name":"opts","type":"git_repository_init_options *","comment":"the `git_repository_init_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`"}],"argline":"git_repository_init_options *opts, unsigned int version","sig":"git_repository_init_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_repository_init_options</code> with default values. Equivalent\n to creating an instance with GIT_REPOSITORY_INIT_OPTIONS_INIT.</p>\n","comments":"","group":"repository"},"git_repository_init_ext":{"type":"function","file":"repository.h","line":317,"lineto":320,"args":[{"name":"out","type":"git_repository **","comment":"Pointer to the repo which will be created or reinitialized."},{"name":"repo_path","type":"const char *","comment":"The path to the repository."},{"name":"opts","type":"git_repository_init_options *","comment":"Pointer to git_repository_init_options struct."}],"argline":"git_repository **out, const char *repo_path, git_repository_init_options *opts","sig":"git_repository **::const char *::git_repository_init_options *","return":{"type":"int","comment":" 0 or an error code on failure."},"description":"<p>Create a new Git repository in the given folder with extended controls.</p>\n","comments":"<p>This will initialize a new git repository (creating the repo_path if requested by flags) and working directory as needed.  It will auto-detect the case sensitivity of the file system and if the file system supports file mode bits correctly.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.1/init.html#git_repository_init_ext-8"]}},"git_repository_head":{"type":"function","file":"repository.h","line":335,"lineto":335,"args":[{"name":"out","type":"git_reference **","comment":"pointer to the reference which will be retrieved"},{"name":"repo","type":"git_repository *","comment":"a repository object"}],"argline":"git_reference **out, git_repository *repo","sig":"git_reference **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise"},"description":"<p>Retrieve and resolve the reference pointed at by HEAD.</p>\n","comments":"<p>The returned <code>git_reference</code> will be owned by caller and <code>git_reference_free()</code> must be called when done with it to release the allocated memory and prevent a leak.</p>\n","group":"repository","examples":{"status.c":["ex/v0.25.1/status.html#git_repository_head-7"]}},"git_repository_head_detached":{"type":"function","file":"repository.h","line":347,"lineto":347,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if HEAD is detached, 0 if it's not; error code if there\n was an error."},"description":"<p>Check if a repository&#39;s HEAD is detached</p>\n","comments":"<p>A repository&#39;s HEAD is detached when it points directly to a commit instead of a branch.</p>\n","group":"repository"},"git_repository_head_unborn":{"type":"function","file":"repository.h","line":359,"lineto":359,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error"},"description":"<p>Check if the current branch is unborn</p>\n","comments":"<p>An unborn branch is one named from HEAD but which doesn&#39;t exist in the refs namespace, because it doesn&#39;t have any commit to point to.</p>\n","group":"repository"},"git_repository_is_empty":{"type":"function","file":"repository.h","line":371,"lineto":371,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted"},"description":"<p>Check if a repository is empty</p>\n","comments":"<p>An empty repository has just been initialized and contains no references apart from HEAD, which must be pointing to the unborn master branch.</p>\n","group":"repository"},"git_repository_path":{"type":"function","file":"repository.h","line":382,"lineto":382,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the repository"},"description":"<p>Get the path of this repository</p>\n","comments":"<p>This is the path of the <code>.git</code> folder for normal repositories, or of the repository itself for bare repositories.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.1/init.html#git_repository_path-9"],"status.c":["ex/v0.25.1/status.html#git_repository_path-8"]}},"git_repository_workdir":{"type":"function","file":"repository.h","line":393,"lineto":393,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the path to the working dir, if it exists"},"description":"<p>Get the path of the working directory for this repository</p>\n","comments":"<p>If the repository is bare, this function will always return NULL.</p>\n","group":"repository","examples":{"init.c":["ex/v0.25.1/init.html#git_repository_workdir-10"]}},"git_repository_set_workdir":{"type":"function","file":"repository.h","line":412,"lineto":413,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"workdir","type":"const char *","comment":"The path to a working directory"},{"name":"update_gitlink","type":"int","comment":"Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)"}],"argline":"git_repository *repo, const char *workdir, int update_gitlink","sig":"git_repository *::const char *::int","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Set the path to the working directory for this repository</p>\n","comments":"<p>The working directory doesn&#39;t need to be the same one that contains the <code>.git</code> folder for this repository.</p>\n\n<p>If this repository is bare, setting its working directory will turn it into a normal repository, capable of performing all the common workdir operations (checkout, status, index manipulation, etc).</p>\n","group":"repository"},"git_repository_is_bare":{"type":"function","file":"repository.h","line":421,"lineto":421,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to test"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if the repository is bare, 0 otherwise."},"description":"<p>Check if a repository is bare</p>\n","comments":"","group":"repository","examples":{"status.c":["ex/v0.25.1/status.html#git_repository_is_bare-9"]}},"git_repository_config":{"type":"function","file":"repository.h","line":437,"lineto":437,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the configuration file for this repository.</p>\n","comments":"<p>If a configuration file has not been set, the default config set for the repository will be returned, including global and system configurations (if they are available).</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_config_snapshot":{"type":"function","file":"repository.h","line":453,"lineto":453,"args":[{"name":"out","type":"git_config **","comment":"Pointer to store the loaded configuration"},{"name":"repo","type":"git_repository *","comment":"the repository"}],"argline":"git_config **out, git_repository *repo","sig":"git_config **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get a snapshot of the repository&#39;s configuration</p>\n","comments":"<p>Convenience function to take a snapshot from the repository&#39;s configuration.  The contents of this snapshot will not change, even if the underlying config files are modified.</p>\n\n<p>The configuration file must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_odb":{"type":"function","file":"repository.h","line":469,"lineto":469,"args":[{"name":"out","type":"git_odb **","comment":"Pointer to store the loaded ODB"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_odb **out, git_repository *repo","sig":"git_odb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Object Database for this repository.</p>\n","comments":"<p>If a custom ODB has not been set, the default database for the repository will be returned (the one located in <code>.git/objects</code>).</p>\n\n<p>The ODB must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_repository_odb-33"],"general.c":["ex/v0.25.1/general.html#git_repository_odb-62"]}},"git_repository_refdb":{"type":"function","file":"repository.h","line":485,"lineto":485,"args":[{"name":"out","type":"git_refdb **","comment":"Pointer to store the loaded refdb"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_refdb **out, git_repository *repo","sig":"git_refdb **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Reference Database Backend for this repository.</p>\n","comments":"<p>If a custom refsdb has not been set, the default database for the repository will be returned (the one that manipulates loose and packed references in the <code>.git</code> directory).</p>\n\n<p>The refdb must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository"},"git_repository_index":{"type":"function","file":"repository.h","line":501,"lineto":501,"args":[{"name":"out","type":"git_index **","comment":"Pointer to store the loaded index"},{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_index **out, git_repository *repo","sig":"git_index **::git_repository *","return":{"type":"int","comment":" 0, or an error code"},"description":"<p>Get the Index file for this repository.</p>\n","comments":"<p>If a custom index has not been set, the default index for the repository will be returned (the one located in <code>.git/index</code>).</p>\n\n<p>The index must be freed once it&#39;s no longer being used by the user.</p>\n","group":"repository","examples":{"general.c":["ex/v0.25.1/general.html#git_repository_index-63"],"init.c":["ex/v0.25.1/init.html#git_repository_index-11"]}},"git_repository_message":{"type":"function","file":"repository.h","line":519,"lineto":519,"args":[{"name":"out","type":"git_buf *","comment":"git_buf to write data into"},{"name":"repo","type":"git_repository *","comment":"Repository to read prepared message from"}],"argline":"git_buf *out, git_repository *repo","sig":"git_buf *::git_repository *","return":{"type":"int","comment":" 0, GIT_ENOTFOUND if no message exists or an error code"},"description":"<p>Retrieve git&#39;s prepared message</p>\n","comments":"<p>Operations such as git revert/cherry-pick/merge with the -n option stop just short of creating a commit with the changes and save their prepared message in .git/MERGE_MSG so the next git-commit execution can present it to the user for them to amend if they wish.</p>\n\n<p>Use this function to get the contents of this file. Don&#39;t forget to remove the file after you create the commit.</p>\n","group":"repository"},"git_repository_message_remove":{"type":"function","file":"repository.h","line":526,"lineto":526,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":null},"description":"<p>Remove git&#39;s prepared message.</p>\n","comments":"<p>Remove the message that <code>git_repository_message</code> retrieves.</p>\n","group":"repository"},"git_repository_state_cleanup":{"type":"function","file":"repository.h","line":535,"lineto":535,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, or error"},"description":"<p>Remove all the metadata associated with an ongoing command like merge,\n revert, cherry-pick, etc.  For example: MERGE_HEAD, MERGE_MSG, etc.</p>\n","comments":"","group":"repository"},"git_repository_fetchhead_foreach":{"type":"function","file":"repository.h","line":554,"lineto":557,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_fetchhead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_fetchhead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_fetchhead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no FETCH_HEAD file, or other error code."},"description":"<p>Invoke &#39;callback&#39; for each entry in the given FETCH_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_mergehead_foreach":{"type":"function","file":"repository.h","line":574,"lineto":577,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_repository_mergehead_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_repository_mergehead_foreach_cb callback, void *payload","sig":"git_repository *::git_repository_mergehead_foreach_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, GIT_ENOTFOUND if\n         there is no MERGE_HEAD file, or other error code."},"description":"<p>If a merge is in progress, invoke &#39;callback&#39; for each commit ID in the\n MERGE_HEAD file.</p>\n","comments":"<p>Return a non-zero value from the callback to stop the loop.</p>\n","group":"repository"},"git_repository_hashfile":{"type":"function","file":"repository.h","line":602,"lineto":607,"args":[{"name":"out","type":"git_oid *","comment":"Output value of calculated SHA"},{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"path","type":"const char *","comment":"Path to file on disk whose contents should be hashed. If the\n             repository is not NULL, this can be a relative path."},{"name":"type","type":"git_otype","comment":"The object type to hash as (e.g. GIT_OBJ_BLOB)"},{"name":"as_path","type":"const char *","comment":"The path to use to look up filtering rules. If this is\n             NULL, then the `path` parameter will be used instead. If\n             this is passed as the empty string, then no filters will be\n             applied when calculating the hash."}],"argline":"git_oid *out, git_repository *repo, const char *path, git_otype type, const char *as_path","sig":"git_oid *::git_repository *::const char *::git_otype::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Calculate hash of file using repository filtering rules.</p>\n","comments":"<p>If you simply want to calculate the hash of a file on disk with no filters, you can just use the <code>git_odb_hashfile()</code> API.  However, if you want to hash a file in the repository and you want to apply filtering rules (e.g. crlf filters) before generating the SHA, then use this function.</p>\n\n<p>Note: if the repository has <code>core.safecrlf</code> set to fail and the filtering triggers that failure, then this function will return an error and not calculate the hash of the file.</p>\n","group":"repository"},"git_repository_set_head":{"type":"function","file":"repository.h","line":627,"lineto":629,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"refname","type":"const char *","comment":"Canonical name of the reference the HEAD should point at"}],"argline":"git_repository *repo, const char *refname","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD point to the specified reference.</p>\n","comments":"<p>If the provided reference points to a Tree or a Blob, the HEAD is unaltered and -1 is returned.</p>\n\n<p>If the provided reference points to a branch, the HEAD will point to that branch, staying attached, or become attached if it isn&#39;t yet. If the branch doesn&#39;t exist yet, no error will be return. The HEAD will then be attached to an unborn branch.</p>\n\n<p>Otherwise, the HEAD will be detached and will directly point to the Commit.</p>\n","group":"repository"},"git_repository_set_head_detached":{"type":"function","file":"repository.h","line":647,"lineto":649,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"},{"name":"commitish","type":"const git_oid *","comment":"Object id of the Commit the HEAD should point to"}],"argline":"git_repository *repo, const git_oid *commitish","sig":"git_repository *::const git_oid *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>If the provided committish cannot be found in the repository, the HEAD is unaltered and GIT_ENOTFOUND is returned.</p>\n\n<p>If the provided commitish cannot be peeled into a commit, the HEAD is unaltered and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will eventually be detached and will directly point to the peeled Commit.</p>\n","group":"repository"},"git_repository_set_head_detached_from_annotated":{"type":"function","file":"repository.h","line":663,"lineto":665,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commitish","type":"const git_annotated_commit *","comment":null}],"argline":"git_repository *repo, const git_annotated_commit *commitish","sig":"git_repository *::const git_annotated_commit *","return":{"type":"int","comment":null},"description":"<p>Make the repository HEAD directly point to the Commit.</p>\n","comments":"<p>This behaves like <code>git_repository_set_head_detached()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_repository_set_head_detached()</code>.</p>\n","group":"repository"},"git_repository_detach_head":{"type":"function","file":"repository.h","line":684,"lineto":685,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code"},"description":"<p>Detach the HEAD.</p>\n","comments":"<p>If the HEAD is already detached and points to a Commit, 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a Tag, the HEAD is updated into making it point to the peeled Commit, and 0 is returned.</p>\n\n<p>If the HEAD is already detached and points to a non commitish, the HEAD is unaltered, and -1 is returned.</p>\n\n<p>Otherwise, the HEAD will be detached and point to the peeled Commit.</p>\n","group":"repository"},"git_repository_state":{"type":"function","file":"repository.h","line":715,"lineto":715,"args":[{"name":"repo","type":"git_repository *","comment":"Repository pointer"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" The state of the repository"},"description":"<p>Determines the status of a git repository - ie, whether an operation\n (merge, cherry-pick, etc) is in progress.</p>\n","comments":"","group":"repository"},"git_repository_set_namespace":{"type":"function","file":"repository.h","line":729,"lineto":729,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"},{"name":"nmspace","type":"const char *","comment":"The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace."}],"argline":"git_repository *repo, const char *nmspace","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, -1 on error"},"description":"<p>Sets the active namespace for this Git Repository</p>\n","comments":"<p>This namespace affects all reference operations for the repo. See <code>man gitnamespaces</code></p>\n","group":"repository"},"git_repository_get_namespace":{"type":"function","file":"repository.h","line":737,"lineto":737,"args":[{"name":"repo","type":"git_repository *","comment":"The repo"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"const char *","comment":" the active namespace, or NULL if there isn't one"},"description":"<p>Get the currently active namespace for this repository</p>\n","comments":"","group":"repository"},"git_repository_is_shallow":{"type":"function","file":"repository.h","line":746,"lineto":746,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 1 if shallow, zero if not"},"description":"<p>Determine if the repository was a shallow clone</p>\n","comments":"","group":"repository"},"git_repository_ident":{"type":"function","file":"repository.h","line":758,"lineto":758,"args":[{"name":"name","type":"const char **","comment":"where to store the pointer to the name"},{"name":"email","type":"const char **","comment":"where to store the pointer to the email"},{"name":"repo","type":"const git_repository *","comment":"the repository"}],"argline":"const char **name, const char **email, const git_repository *repo","sig":"const char **::const char **::const git_repository *","return":{"type":"int","comment":null},"description":"<p>Retrieve the configured identity to use for reflogs</p>\n","comments":"<p>The memory is owned by the repository and must not be freed by the user.</p>\n","group":"repository"},"git_repository_set_ident":{"type":"function","file":"repository.h","line":771,"lineto":771,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to configure"},{"name":"name","type":"const char *","comment":"the name to use for the reflog entries"},{"name":"email","type":"const char *","comment":"the email to use for the reflog entries"}],"argline":"git_repository *repo, const char *name, const char *email","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":null},"description":"<p>Set the identity to be used for writing reflogs</p>\n","comments":"<p>If both are set, this name and email will be used to write to the reflog. Pass NULL to unset. When unset, the identity will be taken from the repository&#39;s configuration.</p>\n","group":"repository"},"git_reset":{"type":"function","file":"reset.h","line":62,"lineto":66,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"Committish to which the Head should be moved to. This object\n must belong to the given `repo` and can either be a git_commit or a\n git_tag. When a git_tag is being passed, it should be dereferencable\n to a git_commit which oid will be used as the target of the branch."},{"name":"reset_type","type":"git_reset_t","comment":"Kind of reset operation to perform."},{"name":"checkout_opts","type":"const git_checkout_options *","comment":"Checkout options to be used for a HARD reset.\n The checkout_strategy field will be overridden (based on reset_type).\n This parameter can be used to propagate notify and progress callbacks."}],"argline":"git_repository *repo, git_object *target, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_object *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>SOFT reset means the Head will be moved to the commit.</p>\n\n<p>MIXED reset will trigger a SOFT reset, plus the index will be replaced with the content of the commit tree.</p>\n\n<p>HARD reset will trigger a MIXED reset and the working directory will be replaced with the content of the index.  (Untracked and ignored files will be left alone, however.)</p>\n\n<p>TODO: Implement remaining kinds of resets.</p>\n","group":"reset"},"git_reset_from_annotated":{"type":"function","file":"reset.h","line":80,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":null},{"name":"commit","type":"git_annotated_commit *","comment":null},{"name":"reset_type","type":"git_reset_t","comment":null},{"name":"checkout_opts","type":"const git_checkout_options *","comment":null}],"argline":"git_repository *repo, git_annotated_commit *commit, git_reset_t reset_type, const git_checkout_options *checkout_opts","sig":"git_repository *::git_annotated_commit *::git_reset_t::const git_checkout_options *","return":{"type":"int","comment":null},"description":"<p>Sets the current head to the specified commit oid and optionally\n resets the index and working tree to match.</p>\n","comments":"<p>This behaves like <code>git_reset()</code> but takes an annotated commit, which lets you specify which extended sha syntax string was specified by a user, allowing for more exact reflog messages.</p>\n\n<p>See the documentation for <code>git_reset()</code>.</p>\n","group":"reset"},"git_reset_default":{"type":"function","file":"reset.h","line":104,"lineto":107,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to perform the reset operation."},{"name":"target","type":"git_object *","comment":"The committish which content will be used to reset the content\n of the index."},{"name":"pathspecs","type":"git_strarray *","comment":"List of pathspecs to operate on."}],"argline":"git_repository *repo, git_object *target, git_strarray *pathspecs","sig":"git_repository *::git_object *::git_strarray *","return":{"type":"int","comment":" 0 on success or an error code \n<\n 0"},"description":"<p>Updates some entries in the index from the target commit tree.</p>\n","comments":"<p>The scope of the updated entries is determined by the paths being passed in the <code>pathspec</code> parameters.</p>\n\n<p>Passing a NULL <code>target</code> will result in removing entries in the index matching the provided pathspecs.</p>\n","group":"reset"},"git_revert_init_options":{"type":"function","file":"revert.h","line":47,"lineto":49,"args":[{"name":"opts","type":"git_revert_options *","comment":"the `git_revert_options` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`"}],"argline":"git_revert_options *opts, unsigned int version","sig":"git_revert_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_revert_options</code> with default values. Equivalent to\n creating an instance with GIT_REVERT_OPTIONS_INIT.</p>\n","comments":"","group":"revert"},"git_revert_commit":{"type":"function","file":"revert.h","line":65,"lineto":71,"args":[{"name":"out","type":"git_index **","comment":"pointer to store the index result in"},{"name":"repo","type":"git_repository *","comment":"the repository that contains the given commits"},{"name":"revert_commit","type":"git_commit *","comment":"the commit to revert"},{"name":"our_commit","type":"git_commit *","comment":"the commit to revert against (eg, HEAD)"},{"name":"mainline","type":"unsigned int","comment":"the parent of the revert commit, if it is a merge"},{"name":"merge_options","type":"const git_merge_options *","comment":"the merge options (or null for defaults)"}],"argline":"git_index **out, git_repository *repo, git_commit *revert_commit, git_commit *our_commit, unsigned int mainline, const git_merge_options *merge_options","sig":"git_index **::git_repository *::git_commit *::git_commit *::unsigned int::const git_merge_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit against the given &quot;our&quot; commit, producing an\n index that reflects the result of the revert.</p>\n","comments":"<p>The returned index must be freed explicitly with <code>git_index_free</code>.</p>\n","group":"revert"},"git_revert":{"type":"function","file":"revert.h","line":81,"lineto":84,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to revert"},{"name":"commit","type":"git_commit *","comment":"the commit to revert"},{"name":"given_opts","type":"const git_revert_options *","comment":"merge flags"}],"argline":"git_repository *repo, git_commit *commit, const git_revert_options *given_opts","sig":"git_repository *::git_commit *::const git_revert_options *","return":{"type":"int","comment":" zero on success, -1 on failure."},"description":"<p>Reverts the given commit, producing changes in the index and working directory.</p>\n","comments":"","group":"revert"},"git_revparse_single":{"type":"function","file":"revparse.h","line":37,"lineto":38,"args":[{"name":"out","type":"git_object **","comment":"pointer to output object"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **out, git_repository *repo, const char *spec","sig":"git_object **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code"},"description":"<p>Find a single object, as specified by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> when no longer needed.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.25.1/blame.html#git_revparse_single-26"],"cat-file.c":["ex/v0.25.1/cat-file.html#git_revparse_single-34"],"describe.c":["ex/v0.25.1/describe.html#git_revparse_single-8"],"log.c":["ex/v0.25.1/log.html#git_revparse_single-47"],"tag.c":["ex/v0.25.1/tag.html#git_revparse_single-13","ex/v0.25.1/tag.html#git_revparse_single-14","ex/v0.25.1/tag.html#git_revparse_single-15","ex/v0.25.1/tag.html#git_revparse_single-16"]}},"git_revparse_ext":{"type":"function","file":"revparse.h","line":61,"lineto":65,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to output object"},{"name":"reference_out","type":"git_reference **","comment":"pointer to output reference or NULL"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the textual specification for an object"}],"argline":"git_object **object_out, git_reference **reference_out, git_repository *repo, const char *spec","sig":"git_object **::git_reference **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code"},"description":"<p>Find a single object and intermediate reference by a revision string.</p>\n","comments":"<p>See <code>man gitrevisions</code>, or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n\n<p>In some cases (<code>@{&lt;-n&gt;}</code> or <code>&lt;branchname&gt;@{upstream}</code>), the expression may point to an intermediate reference. When such expressions are being passed in, <code>reference_out</code> will be valued as well.</p>\n\n<p>The returned object should be released with <code>git_object_free</code> and the returned reference with <code>git_reference_free</code> when no longer needed.</p>\n","group":"revparse"},"git_revparse":{"type":"function","file":"revparse.h","line":105,"lineto":108,"args":[{"name":"revspec","type":"git_revspec *","comment":"Pointer to an user-allocated git_revspec struct where\n\t              the result of the rev-parse will be stored"},{"name":"repo","type":"git_repository *","comment":"the repository to search in"},{"name":"spec","type":"const char *","comment":"the rev-parse spec to parse"}],"argline":"git_revspec *revspec, git_repository *repo, const char *spec","sig":"git_revspec *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code"},"description":"<p>Parse a revision string for <code>from</code>, <code>to</code>, and intent.</p>\n","comments":"<p>See <code>man gitrevisions</code> or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information on the syntax accepted.</p>\n","group":"revparse","examples":{"blame.c":["ex/v0.25.1/blame.html#git_revparse-27"],"log.c":["ex/v0.25.1/log.html#git_revparse-48"],"rev-parse.c":["ex/v0.25.1/rev-parse.html#git_revparse-18","ex/v0.25.1/rev-parse.html#git_revparse-19"]}},"git_revwalk_new":{"type":"function","file":"revwalk.h","line":73,"lineto":73,"args":[{"name":"out","type":"git_revwalk **","comment":"pointer to the new revision walker"},{"name":"repo","type":"git_repository *","comment":"the repo to walk through"}],"argline":"git_revwalk **out, git_repository *repo","sig":"git_revwalk **::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Allocate a new revision walker to iterate through a repo.</p>\n","comments":"<p>This revision walker uses a custom memory pool and an internal commit cache, so it is relatively expensive to allocate.</p>\n\n<p>For maximum performance, this revision walker should be reused for different walks.</p>\n\n<p>This revision walker is <em>not</em> thread safe: it may only be used to walk a repository on a single thread; however, it is possible to have several revision walkers in several different threads walking the same repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.1/general.html#git_revwalk_new-64"],"log.c":["ex/v0.25.1/log.html#git_revwalk_new-49","ex/v0.25.1/log.html#git_revwalk_new-50"]}},"git_revwalk_reset":{"type":"function","file":"revwalk.h","line":88,"lineto":88,"args":[{"name":"walker","type":"git_revwalk *","comment":"handle to reset."}],"argline":"git_revwalk *walker","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Reset the revision walker for reuse.</p>\n","comments":"<p>This will clear all the pushed and hidden commits, and leave the walker in a blank state (just like at creation) ready to receive new commit pushes and start a new walk.</p>\n\n<p>The revision walk is automatically reset when a walk is over.</p>\n","group":"revwalk"},"git_revwalk_push":{"type":"function","file":"revwalk.h","line":107,"lineto":107,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"id","type":"const git_oid *","comment":"the oid of the commit to start from."}],"argline":"git_revwalk *walk, const git_oid *id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add a new root for the traversal</p>\n","comments":"<p>The pushed commit will be marked as one of the roots from which to start the walk. This commit may not be walked if it or a child is hidden.</p>\n\n<p>At least one commit must be pushed onto the walker before a walk can be started.</p>\n\n<p>The given id must belong to a committish on the walked repository.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.1/general.html#git_revwalk_push-65"],"log.c":["ex/v0.25.1/log.html#git_revwalk_push-51"]}},"git_revwalk_push_glob":{"type":"function","file":"revwalk.h","line":125,"lineto":125,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push matching references</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern will be pushed to the revision walker.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_push_head":{"type":"function","file":"revwalk.h","line":133,"lineto":133,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk","examples":{"log.c":["ex/v0.25.1/log.html#git_revwalk_push_head-52"]}},"git_revwalk_hide":{"type":"function","file":"revwalk.h","line":148,"lineto":148,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"commit_id","type":"const git_oid *","comment":"the oid of commit that will be ignored during the traversal"}],"argline":"git_revwalk *walk, const git_oid *commit_id","sig":"git_revwalk *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Mark a commit (and its ancestors) uninteresting for the output.</p>\n","comments":"<p>The given id must belong to a committish on the walked repository.</p>\n\n<p>The resolved commit and all its parents will be hidden from the output on the revision walk.</p>\n","group":"revwalk","examples":{"log.c":["ex/v0.25.1/log.html#git_revwalk_hide-53"]}},"git_revwalk_hide_glob":{"type":"function","file":"revwalk.h","line":167,"lineto":167,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"glob","type":"const char *","comment":"the glob pattern references should match"}],"argline":"git_revwalk *walk, const char *glob","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide matching references.</p>\n","comments":"<p>The OIDs pointed to by the references that match the given glob pattern and their ancestors will be hidden from the output on the revision walk.</p>\n\n<p>A leading &#39;refs/&#39; is implied if not present as well as a trailing &#39;/*&#39; if the glob lacks &#39;?&#39;, &#39;*&#39; or &#39;[&#39;.</p>\n\n<p>Any references matching this glob which do not point to a committish will be ignored.</p>\n","group":"revwalk"},"git_revwalk_hide_head":{"type":"function","file":"revwalk.h","line":175,"lineto":175,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the repository&#39;s HEAD</p>\n","comments":"","group":"revwalk"},"git_revwalk_push_ref":{"type":"function","file":"revwalk.h","line":186,"lineto":186,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to push"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_hide_ref":{"type":"function","file":"revwalk.h","line":197,"lineto":197,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"refname","type":"const char *","comment":"the reference to hide"}],"argline":"git_revwalk *walk, const char *refname","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Hide the OID pointed to by a reference</p>\n","comments":"<p>The reference must point to a committish.</p>\n","group":"revwalk"},"git_revwalk_next":{"type":"function","file":"revwalk.h","line":217,"lineto":217,"args":[{"name":"out","type":"git_oid *","comment":"Pointer where to store the oid of the next commit"},{"name":"walk","type":"git_revwalk *","comment":"the walker to pop the commit from."}],"argline":"git_oid *out, git_revwalk *walk","sig":"git_oid *::git_revwalk *","return":{"type":"int","comment":" 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate"},"description":"<p>Get the next commit from the revision walk.</p>\n","comments":"<p>The initial call to this method is <em>not</em> blocking when iterating through a repo with a time-sorting mode.</p>\n\n<p>Iterating with Topological or inverted modes makes the initial call blocking to preprocess the commit list, but this block should be mostly unnoticeable on most repositories (topological preprocessing times at 0.3s on the git.git repo).</p>\n\n<p>The revision walker is reset when the walk is over.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.1/general.html#git_revwalk_next-66"],"log.c":["ex/v0.25.1/log.html#git_revwalk_next-54"]}},"git_revwalk_sorting":{"type":"function","file":"revwalk.h","line":228,"lineto":228,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal."},{"name":"sort_mode","type":"unsigned int","comment":"combination of GIT_SORT_XXX flags"}],"argline":"git_revwalk *walk, unsigned int sort_mode","sig":"git_revwalk *::unsigned int","return":{"type":"void","comment":null},"description":"<p>Change the sorting mode when iterating through the\n repository&#39;s contents.</p>\n","comments":"<p>Changing the sorting mode resets the walker.</p>\n","group":"revwalk","examples":{"general.c":["ex/v0.25.1/general.html#git_revwalk_sorting-67"],"log.c":["ex/v0.25.1/log.html#git_revwalk_sorting-55","ex/v0.25.1/log.html#git_revwalk_sorting-56"]}},"git_revwalk_push_range":{"type":"function","file":"revwalk.h","line":243,"lineto":243,"args":[{"name":"walk","type":"git_revwalk *","comment":"the walker being used for the traversal"},{"name":"range","type":"const char *","comment":"the range"}],"argline":"git_revwalk *walk, const char *range","sig":"git_revwalk *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Push and hide the respective endpoints of the given range.</p>\n","comments":"<p>The range should be of the form   <commit>..<commit> where each <commit> is in the form accepted by &#39;git_revparse_single&#39;. The left-hand commit will be hidden and the right-hand commit pushed.</p>\n","group":"revwalk"},"git_revwalk_simplify_first_parent":{"type":"function","file":"revwalk.h","line":250,"lineto":250,"args":[{"name":"walk","type":"git_revwalk *","comment":null}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Simplify the history by first-parent</p>\n","comments":"<p>No parents other than the first for each commit will be enqueued.</p>\n","group":"revwalk"},"git_revwalk_free":{"type":"function","file":"revwalk.h","line":258,"lineto":258,"args":[{"name":"walk","type":"git_revwalk *","comment":"traversal handle to close. If NULL nothing occurs."}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"void","comment":null},"description":"<p>Free a revision walker previously allocated.</p>\n","comments":"","group":"revwalk","examples":{"general.c":["ex/v0.25.1/general.html#git_revwalk_free-68"],"log.c":["ex/v0.25.1/log.html#git_revwalk_free-57"]}},"git_revwalk_repository":{"type":"function","file":"revwalk.h","line":267,"lineto":267,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"}],"argline":"git_revwalk *walk","sig":"git_revwalk *","return":{"type":"git_repository *","comment":" the repository being walked"},"description":"<p>Return the repository on which this walker\n is operating.</p>\n","comments":"","group":"revwalk"},"git_revwalk_add_hide_cb":{"type":"function","file":"revwalk.h","line":288,"lineto":291,"args":[{"name":"walk","type":"git_revwalk *","comment":"the revision walker"},{"name":"hide_cb","type":"git_revwalk_hide_cb","comment":"callback function to hide a commit and its parents"},{"name":"payload","type":"void *","comment":"data payload to be passed to callback function"}],"argline":"git_revwalk *walk, git_revwalk_hide_cb hide_cb, void *payload","sig":"git_revwalk *::git_revwalk_hide_cb::void *","return":{"type":"int","comment":null},"description":"<p>Adds a callback function to hide a commit and its parents</p>\n","comments":"","group":"revwalk"},"git_signature_new":{"type":"function","file":"signature.h","line":37,"lineto":37,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"},{"name":"time","type":"git_time_t","comment":"time when the action happened"},{"name":"offset","type":"int","comment":"timezone offset in minutes for the time"}],"argline":"git_signature **out, const char *name, const char *email, git_time_t time, int offset","sig":"git_signature **::const char *::const char *::git_time_t::int","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n\n<p>Note: angle brackets (&#39;&lt;&#39; and &#39;&gt;&#39;) characters are not allowed to be used in either the <code>name</code> or the <code>email</code> parameter.</p>\n","group":"signature","examples":{"general.c":["ex/v0.25.1/general.html#git_signature_new-69","ex/v0.25.1/general.html#git_signature_new-70"]}},"git_signature_now":{"type":"function","file":"signature.h","line":49,"lineto":49,"args":[{"name":"out","type":"git_signature **","comment":"new signature, in case of error NULL"},{"name":"name","type":"const char *","comment":"name of the person"},{"name":"email","type":"const char *","comment":"email of the person"}],"argline":"git_signature **out, const char *name, const char *email","sig":"git_signature **::const char *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a new action signature with a timestamp of &#39;now&#39;.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_default":{"type":"function","file":"signature.h","line":63,"lineto":63,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"repo","type":"git_repository *","comment":"repository pointer"}],"argline":"git_signature **out, git_repository *repo","sig":"git_signature **::git_repository *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if config is missing, or error code"},"description":"<p>Create a new action signature with default user and now timestamp.</p>\n","comments":"<p>This looks up the user.name and user.email from the configuration and uses the current time as the timestamp, and creates a new signature based on that information.  It will return GIT_ENOTFOUND if either the user.name or user.email are not set.</p>\n","group":"signature","examples":{"init.c":["ex/v0.25.1/init.html#git_signature_default-12"],"tag.c":["ex/v0.25.1/tag.html#git_signature_default-17"]}},"git_signature_from_buffer":{"type":"function","file":"signature.h","line":76,"lineto":76,"args":[{"name":"out","type":"git_signature **","comment":"new signature"},{"name":"buf","type":"const char *","comment":"signature string"}],"argline":"git_signature **out, const char *buf","sig":"git_signature **::const char *","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new signature by parsing the given buffer, which is\n expected to be in the format &quot;Real Name \n&lt;email</p>\n\n<blockquote>\n<p>timestamp tzoffset&quot;,\n where <code>timestamp</code> is the number of seconds since the Unix epoch and\n <code>tzoffset</code> is the timezone offset in <code>hhmm</code> format (note the lack\n of a colon separator).</p>\n</blockquote>\n","comments":"","group":"signature"},"git_signature_dup":{"type":"function","file":"signature.h","line":88,"lineto":88,"args":[{"name":"dest","type":"git_signature **","comment":"pointer where to store the copy"},{"name":"sig","type":"const git_signature *","comment":"signature to duplicate"}],"argline":"git_signature **dest, const git_signature *sig","sig":"git_signature **::const git_signature *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create a copy of an existing signature.  All internal strings are also\n duplicated.</p>\n","comments":"<p>Call <code>git_signature_free()</code> to free the data.</p>\n","group":"signature"},"git_signature_free":{"type":"function","file":"signature.h","line":99,"lineto":99,"args":[{"name":"sig","type":"git_signature *","comment":"signature to free"}],"argline":"git_signature *sig","sig":"git_signature *","return":{"type":"void","comment":null},"description":"<p>Free an existing signature.</p>\n","comments":"<p>Because the signature is not an opaque structure, it is legal to free it manually, but be sure to free the &quot;name&quot; and &quot;email&quot; strings in addition to the structure itself.</p>\n","group":"signature","examples":{"init.c":["ex/v0.25.1/init.html#git_signature_free-13"],"tag.c":["ex/v0.25.1/tag.html#git_signature_free-18"]}},"git_stash_apply_init_options":{"type":"function","file":"stash.h","line":153,"lineto":154,"args":[{"name":"opts","type":"git_stash_apply_options *","comment":"the `git_stash_apply_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"the version of the struct; you should pass\n        `GIT_STASH_APPLY_OPTIONS_INIT` here."}],"argline":"git_stash_apply_options *opts, unsigned int version","sig":"git_stash_apply_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_stash_apply_options</code> with default values. Equivalent to\n creating an instance with GIT_STASH_APPLY_OPTIONS_INIT.</p>\n","comments":"","group":"stash"},"git_stash_apply":{"type":"function","file":"stash.h","line":182,"lineto":185,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the\n         given index, GIT_EMERGECONFLICT if changes exist in the working\n         directory, or an error code"},"description":"<p>Apply a single stashed state from the stash list.</p>\n","comments":"<p>If local changes in the working directory conflict with changes in the stash then GIT_EMERGECONFLICT will be returned.  In this case, the index will always remain unmodified and all files in the working directory will remain unmodified.  However, if you are restoring untracked files or ignored files and there is a conflict when applying the modified files, then those files will remain in the working directory.</p>\n\n<p>If passing the GIT_STASH_APPLY_REINSTATE_INDEX flag and there would be conflicts when reinstating the index, the function will return GIT_EMERGECONFLICT and both the working directory and index will be left unmodified.</p>\n\n<p>Note that a minimum checkout strategy of <code>GIT_CHECKOUT_SAFE</code> is implied.</p>\n","group":"stash"},"git_stash_foreach":{"type":"function","file":"stash.h","line":218,"lineto":221,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where to find the stash."},{"name":"callback","type":"git_stash_cb","comment":"Callback to invoke per found stashed state. The most\n                 recent stash state will be enumerated first."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"git_repository *repo, git_stash_cb callback, void *payload","sig":"git_repository *::git_stash_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code."},"description":"<p>Loop over all the stashed states and issue a callback for each one.</p>\n","comments":"<p>If the callback returns a non-zero value, this will stop looping.</p>\n","group":"stash"},"git_stash_drop":{"type":"function","file":"stash.h","line":234,"lineto":236,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n most recent stashed state."}],"argline":"git_repository *repo, size_t index","sig":"git_repository *::size_t","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code."},"description":"<p>Remove a single stashed state from the stash list.</p>\n","comments":"","group":"stash"},"git_stash_pop":{"type":"function","file":"stash.h","line":250,"lineto":253,"args":[{"name":"repo","type":"git_repository *","comment":"The owning repository."},{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"options","type":"const git_stash_apply_options *","comment":"Options to control how stashes are applied."}],"argline":"git_repository *repo, size_t index, const git_stash_apply_options *options","sig":"git_repository *::size_t::const git_stash_apply_options *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if there's no stashed state for the given\n index, or error code. (see git_stash_apply() above for details)"},"description":"<p>Apply a single stashed state from the stash list and remove it from the list\n if successful.</p>\n","comments":"","group":"stash"},"git_status_init_options":{"type":"function","file":"status.h","line":195,"lineto":197,"args":[{"name":"opts","type":"git_status_options *","comment":"The `git_status_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_STATUS_OPTIONS_VERSION`"}],"argline":"git_status_options *opts, unsigned int version","sig":"git_status_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_status_options</code> with default values. Equivalent to\n creating an instance with GIT_STATUS_OPTIONS_INIT.</p>\n","comments":"","group":"status"},"git_status_foreach":{"type":"function","file":"status.h","line":235,"lineto":238,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, git_status_cb callback, void *payload","sig":"git_repository *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file statuses and run a callback for each one.</p>\n","comments":"<p>The callback is passed the path of the file, the status (a combination of the <code>git_status_t</code> values above) and the <code>payload</code> data pointer passed into this function.</p>\n\n<p>If the callback returns a non-zero value, this function will stop looping and return that value to caller.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_foreach-10"]}},"git_status_foreach_ext":{"type":"function","file":"status.h","line":259,"lineto":263,"args":[{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"},{"name":"callback","type":"git_status_cb","comment":"The function to call on each file"},{"name":"payload","type":"void *","comment":"Pointer to pass through to callback function"}],"argline":"git_repository *repo, const git_status_options *opts, git_status_cb callback, void *payload","sig":"git_repository *::const git_status_options *::git_status_cb::void *","return":{"type":"int","comment":" 0 on success, non-zero callback return value, or error code"},"description":"<p>Gather file status information and run callbacks as requested.</p>\n","comments":"<p>This is an extended version of the <code>git_status_foreach()</code> API that allows for more granular control over which paths will be processed and in what order.  See the <code>git_status_options</code> structure for details about the additional controls that this makes available.</p>\n\n<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_foreach_ext-11"]}},"git_status_file":{"type":"function","file":"status.h","line":291,"lineto":294,"args":[{"name":"status_flags","type":"unsigned int *","comment":"Output combination of git_status_t values for file"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The exact path to retrieve status for relative to the\n repository working directory"}],"argline":"unsigned int *status_flags, git_repository *repo, const char *path","sig":"unsigned int *::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors."},"description":"<p>Get file status for a single file.</p>\n","comments":"<p>This tries to get status for the filename that you give.  If no files match that name (in either the HEAD, index, or working directory), this returns GIT_ENOTFOUND.</p>\n\n<p>If the name matches multiple files (for example, if the <code>path</code> names a directory or if running on a case- insensitive filesystem and yet the HEAD has two entries that both match the path), then this returns GIT_EAMBIGUOUS because it cannot give correct results.</p>\n\n<p>This does not do any sort of rename detection.  Renames require a set of targets and because of the path filtering, there is not enough information to check renames correctly.  To check file status with rename detection, there is no choice but to do a full <code>git_status_list_new</code> and scan through looking for the path that you are interested in.</p>\n","group":"status"},"git_status_list_new":{"type":"function","file":"status.h","line":309,"lineto":312,"args":[{"name":"out","type":"git_status_list **","comment":"Pointer to store the status results in"},{"name":"repo","type":"git_repository *","comment":"Repository object"},{"name":"opts","type":"const git_status_options *","comment":"Status options structure"}],"argline":"git_status_list **out, git_repository *repo, const git_status_options *opts","sig":"git_status_list **::git_repository *::const git_status_options *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Gather file status information and populate the <code>git_status_list</code>.</p>\n","comments":"<p>Note that if a <code>pathspec</code> is given in the <code>git_status_options</code> to filter the status, then the results from rename detection (if you enable it) may not be accurate.  To do rename detection properly, this must be called with no <code>pathspec</code> so that all files can be considered.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_list_new-12","ex/v0.25.1/status.html#git_status_list_new-13"]}},"git_status_list_entrycount":{"type":"function","file":"status.h","line":323,"lineto":324,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"size_t","comment":" the number of status entries"},"description":"<p>Gets the count of status entries in this list.</p>\n","comments":"<p>If there are no changes in status (at least according the options given when the status list was created), this can return 0.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_list_entrycount-14","ex/v0.25.1/status.html#git_status_list_entrycount-15"]}},"git_status_byindex":{"type":"function","file":"status.h","line":335,"lineto":337,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"},{"name":"idx","type":"size_t","comment":"Position of the entry"}],"argline":"git_status_list *statuslist, size_t idx","sig":"git_status_list *::size_t","return":{"type":"const git_status_entry *","comment":" Pointer to the entry; NULL if out of bounds"},"description":"<p>Get a pointer to one of the entries in the status list.</p>\n","comments":"<p>The entry is not modifiable and should not be freed.</p>\n","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_byindex-16","ex/v0.25.1/status.html#git_status_byindex-17","ex/v0.25.1/status.html#git_status_byindex-18","ex/v0.25.1/status.html#git_status_byindex-19","ex/v0.25.1/status.html#git_status_byindex-20","ex/v0.25.1/status.html#git_status_byindex-21"]}},"git_status_list_free":{"type":"function","file":"status.h","line":344,"lineto":345,"args":[{"name":"statuslist","type":"git_status_list *","comment":"Existing status list object"}],"argline":"git_status_list *statuslist","sig":"git_status_list *","return":{"type":"void","comment":null},"description":"<p>Free an existing status list</p>\n","comments":"","group":"status","examples":{"status.c":["ex/v0.25.1/status.html#git_status_list_free-22"]}},"git_status_should_ignore":{"type":"function","file":"status.h","line":363,"lineto":366,"args":[{"name":"ignored","type":"int *","comment":"Boolean returning 0 if the file is not ignored, 1 if it is"},{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"path","type":"const char *","comment":"The file to check ignores for, rooted at the repo's workdir."}],"argline":"int *ignored, git_repository *repo, const char *path","sig":"int *::git_repository *::const char *","return":{"type":"int","comment":" 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not."},"description":"<p>Test if the ignore rules apply to a given file.</p>\n","comments":"<p>This function checks the ignore rules to see if they would apply to the given file.  This indicates if the file would be ignored regardless of whether the file is already in the index or committed to the repository.</p>\n\n<p>One way to think of this is if you were to do &quot;git add .&quot; on the directory containing the file, would it be added or not?</p>\n","group":"status"},"git_strarray_free":{"type":"function","file":"strarray.h","line":41,"lineto":41,"args":[{"name":"array","type":"git_strarray *","comment":"git_strarray from which to free string data"}],"argline":"git_strarray *array","sig":"git_strarray *","return":{"type":"void","comment":null},"description":"<p>Close a string array object</p>\n","comments":"<p>This method should be called on <code>git_strarray</code> objects where the strings array is allocated and contains allocated strings, such as what you would get from <code>git_strarray_copy()</code>.  Not doing so, will result in a memory leak.</p>\n\n<p>This does not free the <code>git_strarray</code> itself, since the library will never allocate that object directly itself (it is more commonly embedded inside another struct or created on the stack).</p>\n","group":"strarray","examples":{"general.c":["ex/v0.25.1/general.html#git_strarray_free-71"],"remote.c":["ex/v0.25.1/remote.html#git_strarray_free-16","ex/v0.25.1/remote.html#git_strarray_free-17"],"tag.c":["ex/v0.25.1/tag.html#git_strarray_free-19"]}},"git_strarray_copy":{"type":"function","file":"strarray.h","line":53,"lineto":53,"args":[{"name":"tgt","type":"git_strarray *","comment":"target"},{"name":"src","type":"const git_strarray *","comment":"source"}],"argline":"git_strarray *tgt, const git_strarray *src","sig":"git_strarray *::const git_strarray *","return":{"type":"int","comment":" 0 on success, \n<\n 0 on allocation failure"},"description":"<p>Copy a string array object from source to target.</p>\n","comments":"<p>Note: target is overwritten and hence should be empty, otherwise its contents are leaked.  Call git_strarray_free() if necessary.</p>\n","group":"strarray"},"git_submodule_update_init_options":{"type":"function","file":"submodule.h","line":179,"lineto":180,"args":[{"name":"opts","type":"git_submodule_update_options *","comment":"The `git_submodule_update_options` instance to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_SUBMODULE_UPDATE_OPTIONS_VERSION`"}],"argline":"git_submodule_update_options *opts, unsigned int version","sig":"git_submodule_update_options *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_submodule_update_options</code> with default values.\n Equivalent to creating an instance with GIT_SUBMODULE_UPDATE_OPTIONS_INIT.</p>\n","comments":"","group":"submodule"},"git_submodule_update":{"type":"function","file":"submodule.h","line":200,"lineto":200,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"},{"name":"init","type":"int","comment":"If the submodule is not initialized, setting this flag to true\n        will initialize the submodule before updating. Otherwise, this will\n        return an error if attempting to update an uninitialzed repository.\n        but setting this to true forces them to be updated."},{"name":"options","type":"git_submodule_update_options *","comment":"configuration options for the update.  If NULL, the\n        function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed."}],"argline":"git_submodule *submodule, int init, git_submodule_update_options *options","sig":"git_submodule *::int::git_submodule_update_options *","return":{"type":"int","comment":" 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)."},"description":"<p>Update a submodule. This will clone a missing submodule and\n checkout the subrepository to the commit specified in the index of\n the containing repository. If the submodule repository doesn&#39;t contain\n the target commit (e.g. because fetchRecurseSubmodules isn&#39;t set), then\n the submodule is fetched using the fetch options supplied in options.</p>\n","comments":"","group":"submodule"},"git_submodule_lookup":{"type":"function","file":"submodule.h","line":229,"lineto":232,"args":[{"name":"out","type":"git_submodule **","comment":"Output ptr to submodule; pass NULL to just get return code"},{"name":"repo","type":"git_repository *","comment":"The parent repository"},{"name":"name","type":"const char *","comment":"The name of or path to the submodule; trailing slashes okay"}],"argline":"git_submodule **out, git_repository *repo, const char *name","sig":"git_submodule **::git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors."},"description":"<p>Lookup submodule information by name or path.</p>\n","comments":"<p>Given either the submodule name or path (they are usually the same), this returns a structure describing the submodule.</p>\n\n<p>There are two expected error scenarios:</p>\n\n<ul>\n<li>The submodule is not mentioned in the HEAD, the index, and the config,   but does &quot;exist&quot; in the working directory (i.e. there is a subdirectory   that appears to be a Git repository).  In this case, this function   returns GIT_EEXISTS to indicate a sub-repository exists but not in a   state where a git_submodule can be instantiated. - The submodule is not mentioned in the HEAD, index, or config and the   working directory doesn&#39;t contain a value git repo at that path.   There may or may not be anything else at that path, but nothing that   looks like a submodule.  In this case, this returns GIT_ENOTFOUND.</li>\n</ul>\n\n<p>You must call <code>git_submodule_free</code> when done with the submodule.</p>\n","group":"submodule"},"git_submodule_free":{"type":"function","file":"submodule.h","line":239,"lineto":239,"args":[{"name":"submodule","type":"git_submodule *","comment":"Submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"void","comment":null},"description":"<p>Release a submodule</p>\n","comments":"","group":"submodule"},"git_submodule_foreach":{"type":"function","file":"submodule.h","line":259,"lineto":262,"args":[{"name":"repo","type":"git_repository *","comment":"The repository"},{"name":"callback","type":"git_submodule_cb","comment":"Function to be called with the name of each submodule.\n        Return a non-zero value to terminate the iteration."},{"name":"payload","type":"void *","comment":"Extra data to pass to callback"}],"argline":"git_repository *repo, git_submodule_cb callback, void *payload","sig":"git_repository *::git_submodule_cb::void *","return":{"type":"int","comment":" 0 on success, -1 on error, or non-zero return value of callback"},"description":"<p>Iterate over all tracked submodules of a repository.</p>\n","comments":"<p>See the note on <code>git_submodule</code> above.  This iterates over the tracked submodules as described therein.</p>\n\n<p>If you are concerned about items in the working directory that look like submodules but are not tracked, the diff API will generate a diff record for workdir items that look like submodules but are not tracked, showing them as added in the workdir.  Also, the status API will treat the entire subdirectory of a contained git repo as a single GIT_STATUS_WT_NEW item.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.1/status.html#git_submodule_foreach-23"]}},"git_submodule_add_setup":{"type":"function","file":"submodule.h","line":289,"lineto":294,"args":[{"name":"out","type":"git_submodule **","comment":"The newly created submodule ready to open for clone"},{"name":"repo","type":"git_repository *","comment":"The repository in which you want to create the submodule"},{"name":"url","type":"const char *","comment":"URL for the submodule's remote"},{"name":"path","type":"const char *","comment":"Path at which the submodule should be created"},{"name":"use_gitlink","type":"int","comment":"Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir."}],"argline":"git_submodule **out, git_repository *repo, const char *url, const char *path, int use_gitlink","sig":"git_submodule **::git_repository *::const char *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors."},"description":"<p>Set up a new git submodule for checkout.</p>\n","comments":"<p>This does &quot;git submodule add&quot; up to the fetch and checkout of the submodule contents.  It preps a new submodule, creates an entry in .gitmodules and creates an empty initialized repository either at the given path in the working directory or in .git/modules with a gitlink from the working directory to the new repo.</p>\n\n<p>To fully emulate &quot;git submodule add&quot; call this function, then open the submodule repo and perform the clone step as needed.  Lastly, call <code>git_submodule_add_finalize()</code> to wrap up adding the new submodule and .gitmodules to the index to be ready to commit.</p>\n\n<p>You must call <code>git_submodule_free</code> on the submodule object when done.</p>\n","group":"submodule"},"git_submodule_add_finalize":{"type":"function","file":"submodule.h","line":306,"lineto":306,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to finish adding."}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Resolve the setup of a new git submodule.</p>\n","comments":"<p>This should be called on a submodule once you have called add setup and done the clone of the submodule.  This adds the .gitmodules file and the newly cloned submodule to the index to be ready to be committed (but doesn&#39;t actually do the commit).</p>\n","group":"submodule"},"git_submodule_add_to_index":{"type":"function","file":"submodule.h","line":318,"lineto":320,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to add to the index"},{"name":"write_index","type":"int","comment":"Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change."}],"argline":"git_submodule *submodule, int write_index","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Add current submodule HEAD commit to index of superproject.</p>\n","comments":"","group":"submodule"},"git_submodule_owner":{"type":"function","file":"submodule.h","line":333,"lineto":333,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_repository *","comment":" Pointer to `git_repository`"},"description":"<p>Get the containing repository for a submodule.</p>\n","comments":"<p>This returns a pointer to the repository that contains the submodule. This is a just a reference to the repository that was passed to the original <code>git_submodule_lookup()</code> call, so if that repository has been freed, then this may be a dangling reference.</p>\n","group":"submodule"},"git_submodule_name":{"type":"function","file":"submodule.h","line":341,"lineto":341,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule name"},"description":"<p>Get the name of submodule.</p>\n","comments":"","group":"submodule","examples":{"status.c":["ex/v0.25.1/status.html#git_submodule_name-24"]}},"git_submodule_path":{"type":"function","file":"submodule.h","line":352,"lineto":352,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule path"},"description":"<p>Get the path to the submodule.</p>\n","comments":"<p>The path is almost always the same as the submodule name, but the two are actually not required to match.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.1/status.html#git_submodule_path-25"]}},"git_submodule_url":{"type":"function","file":"submodule.h","line":360,"lineto":360,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule url"},"description":"<p>Get the URL for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_resolve_url":{"type":"function","file":"submodule.h","line":370,"lineto":370,"args":[{"name":"out","type":"git_buf *","comment":"buffer to store the absolute submodule url in"},{"name":"repo","type":"git_repository *","comment":"Pointer to repository object"},{"name":"url","type":"const char *","comment":"Relative url"}],"argline":"git_buf *out, git_repository *repo, const char *url","sig":"git_buf *::git_repository *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Resolve a submodule url relative to the given repository.</p>\n","comments":"","group":"submodule"},"git_submodule_branch":{"type":"function","file":"submodule.h","line":378,"lineto":378,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const char *","comment":" Pointer to the submodule branch"},"description":"<p>Get the branch for the submodule.</p>\n","comments":"","group":"submodule"},"git_submodule_set_branch":{"type":"function","file":"submodule.h","line":391,"lineto":391,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"branch","type":"const char *","comment":"Branch that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *branch","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the branch for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_set_url":{"type":"function","file":"submodule.h","line":405,"lineto":405,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"url","type":"const char *","comment":"URL that should be used for the submodule"}],"argline":"git_repository *repo, const char *name, const char *url","sig":"git_repository *::const char *::const char *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set the URL for the submodule in the configuration</p>\n","comments":"<p>After calling this, you may wish to call <code>git_submodule_sync()</code> to write the changes to the checked out submodule repository.</p>\n","group":"submodule"},"git_submodule_index_id":{"type":"function","file":"submodule.h","line":413,"lineto":413,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in index."},"description":"<p>Get the OID for the submodule in the index.</p>\n","comments":"","group":"submodule"},"git_submodule_head_id":{"type":"function","file":"submodule.h","line":421,"lineto":421,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not in the HEAD."},"description":"<p>Get the OID for the submodule in the current HEAD tree.</p>\n","comments":"","group":"submodule"},"git_submodule_wd_id":{"type":"function","file":"submodule.h","line":434,"lineto":434,"args":[{"name":"submodule","type":"git_submodule *","comment":"Pointer to submodule object"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"const git_oid *","comment":" Pointer to git_oid or NULL if submodule is not checked out."},"description":"<p>Get the OID for the submodule in the current working directory.</p>\n","comments":"<p>This returns the OID that corresponds to looking up &#39;HEAD&#39; in the checked out submodule.  If there are pending changes in the index or anything else, this won&#39;t notice that.  You should call <code>git_submodule_status()</code> for a more complete picture about the state of the working directory.</p>\n","group":"submodule"},"git_submodule_ignore":{"type":"function","file":"submodule.h","line":459,"lineto":460,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_ignore_t","comment":" The current git_submodule_ignore_t valyue what will be used for\n         this submodule."},"description":"<p>Get the ignore rule that will be used for the submodule.</p>\n","comments":"<p>These values control the behavior of <code>git_submodule_status()</code> for this submodule.  There are four ignore values:</p>\n\n<ul>\n<li><strong>GIT_SUBMODULE_IGNORE_NONE</strong> will consider any change to the contents    of the submodule from a clean checkout to be dirty, including the    addition of untracked files.  This is the default if unspecified.  - <strong>GIT_SUBMODULE_IGNORE_UNTRACKED</strong> examines the contents of the    working tree (i.e. call <code>git_status_foreach()</code> on the submodule) but    UNTRACKED files will not count as making the submodule dirty.  - <strong>GIT_SUBMODULE_IGNORE_DIRTY</strong> means to only check if the HEAD of the    submodule has moved for status.  This is fast since it does not need to    scan the working tree of the submodule at all.  - <strong>GIT_SUBMODULE_IGNORE_ALL</strong> means not to open the submodule repo.    The working directory will be consider clean so long as there is a    checked out version present.</li>\n</ul>\n","group":"submodule"},"git_submodule_set_ignore":{"type":"function","file":"submodule.h","line":472,"lineto":475,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submdule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"The new value for the ignore rule"}],"argline":"git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the ignore rule for the submodule in the configuration</p>\n","comments":"<p>This does not affect any currently-loaded instances.</p>\n","group":"submodule"},"git_submodule_update_strategy":{"type":"function","file":"submodule.h","line":487,"lineto":488,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to check"}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_update_t","comment":" The current git_submodule_update_t value that will be used\n         for this submodule."},"description":"<p>Get the update rule that will be used for the submodule.</p>\n","comments":"<p>This value controls the behavior of the <code>git submodule update</code> command. There are four useful values documented with <code>git_submodule_update_t</code>.</p>\n","group":"submodule"},"git_submodule_set_update":{"type":"function","file":"submodule.h","line":500,"lineto":503,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the name of the submodule to configure"},{"name":"update","type":"git_submodule_update_t","comment":"The new value to use"}],"argline":"git_repository *repo, const char *name, git_submodule_update_t update","sig":"git_repository *::const char *::git_submodule_update_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Set the update rule for the submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":516,"lineto":517,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"git_submodule_recurse_t","comment":" 0 if fetchRecurseSubmodules is false, 1 if true"},"description":"<p>Read the fetchRecurseSubmodules rule for a submodule.</p>\n","comments":"<p>This accesses the submodule.<name>.fetchRecurseSubmodules value for the submodule that controls fetching behavior for the submodule.</p>\n\n<p>Note that at this time, libgit2 does not honor this setting and the fetch functionality current ignores submodules.</p>\n","group":"submodule"},"git_submodule_set_fetch_recurse_submodules":{"type":"function","file":"submodule.h","line":529,"lineto":532,"args":[{"name":"repo","type":"git_repository *","comment":"the repository to affect"},{"name":"name","type":"const char *","comment":"the submodule to configure"},{"name":"fetch_recurse_submodules","type":"git_submodule_recurse_t","comment":"Boolean value"}],"argline":"git_repository *repo, const char *name, git_submodule_recurse_t fetch_recurse_submodules","sig":"git_repository *::const char *::git_submodule_recurse_t","return":{"type":"int","comment":" old value for fetchRecurseSubmodules"},"description":"<p>Set the fetchRecurseSubmodules rule for a submodule in the configuration</p>\n","comments":"<p>This setting won&#39;t affect any existing instances.</p>\n","group":"submodule"},"git_submodule_init":{"type":"function","file":"submodule.h","line":547,"lineto":547,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to write into the superproject config"},{"name":"overwrite","type":"int","comment":"By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated."}],"argline":"git_submodule *submodule, int overwrite","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Copy submodule info into &quot;.git/config&quot; file.</p>\n","comments":"<p>Just like &quot;git submodule init&quot;, this copies information about the submodule into &quot;.git/config&quot;.  You can use the accessor functions above to alter the in-memory git_submodule object and control what is written to the config, overriding what is in .gitmodules.</p>\n","group":"submodule"},"git_submodule_repo_init":{"type":"function","file":"submodule.h","line":562,"lineto":565,"args":[{"name":"out","type":"git_repository **","comment":"Output pointer to the created git repository."},{"name":"sm","type":"const git_submodule *","comment":"The submodule to create a new subrepository from."},{"name":"use_gitlink","type":"int","comment":"Should the workdir contain a gitlink to\n        the repo in .git/modules vs. repo directly in workdir."}],"argline":"git_repository **out, const git_submodule *sm, int use_gitlink","sig":"git_repository **::const git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure."},"description":"<p>Set up the subrepository for a submodule in preparation for clone.</p>\n","comments":"<p>This function can be called to init and set up a submodule repository from a submodule in preparation to clone it from its remote.</p>\n","group":"submodule"},"git_submodule_sync":{"type":"function","file":"submodule.h","line":575,"lineto":575,"args":[{"name":"submodule","type":"git_submodule *","comment":null}],"argline":"git_submodule *submodule","sig":"git_submodule *","return":{"type":"int","comment":null},"description":"<p>Copy submodule remote info into submodule repo.</p>\n","comments":"<p>This copies the information about the submodules URL into the checked out submodule config, acting like &quot;git submodule sync&quot;.  This is useful if you have altered the URL for the submodule (or it has been altered by a fetch of upstream changes) and you need to update your local repo.</p>\n","group":"submodule"},"git_submodule_open":{"type":"function","file":"submodule.h","line":589,"lineto":591,"args":[{"name":"repo","type":"git_repository **","comment":"Pointer to the submodule repo which was opened"},{"name":"submodule","type":"git_submodule *","comment":"Submodule to be opened"}],"argline":"git_repository **repo, git_submodule *submodule","sig":"git_repository **::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 if submodule repo could not be opened."},"description":"<p>Open the repository for a submodule.</p>\n","comments":"<p>This is a newly opened repository object.  The caller is responsible for calling <code>git_repository_free()</code> on it when done.  Multiple calls to this function will return distinct <code>git_repository</code> objects.  This will only work if the submodule is checked out into the working directory.</p>\n","group":"submodule"},"git_submodule_reload":{"type":"function","file":"submodule.h","line":603,"lineto":603,"args":[{"name":"submodule","type":"git_submodule *","comment":"The submodule to reload"},{"name":"force","type":"int","comment":"Force reload even if the data doesn't seem out of date"}],"argline":"git_submodule *submodule, int force","sig":"git_submodule *::int","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Reread submodule info from config, index, and HEAD.</p>\n","comments":"<p>Call this to reread cached submodule information for this submodule if you have reason to believe that it has changed.</p>\n","group":"submodule"},"git_submodule_status":{"type":"function","file":"submodule.h","line":619,"lineto":623,"args":[{"name":"status","type":"unsigned int *","comment":"Combination of `GIT_SUBMODULE_STATUS` flags"},{"name":"repo","type":"git_repository *","comment":"the repository in which to look"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"ignore","type":"git_submodule_ignore_t","comment":"the ignore rules to follow"}],"argline":"unsigned int *status, git_repository *repo, const char *name, git_submodule_ignore_t ignore","sig":"unsigned int *::git_repository *::const char *::git_submodule_ignore_t","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the status for a submodule.</p>\n","comments":"<p>This looks at a submodule and tries to determine the status.  It will return a combination of the <code>GIT_SUBMODULE_STATUS</code> values above. How deeply it examines the working directory to do this will depend on the <code>git_submodule_ignore_t</code> value for the submodule.</p>\n","group":"submodule","examples":{"status.c":["ex/v0.25.1/status.html#git_submodule_status-26"]}},"git_submodule_location":{"type":"function","file":"submodule.h","line":639,"lineto":641,"args":[{"name":"location_status","type":"unsigned int *","comment":"Combination of first four `GIT_SUBMODULE_STATUS` flags"},{"name":"submodule","type":"git_submodule *","comment":"Submodule for which to get status"}],"argline":"unsigned int *location_status, git_submodule *submodule","sig":"unsigned int *::git_submodule *","return":{"type":"int","comment":" 0 on success, \n<\n0 on error"},"description":"<p>Get the locations of submodule information.</p>\n","comments":"<p>This is a bit like a very lightweight version of <code>git_submodule_status</code>. It just returns a made of the first four submodule status values (i.e. the ones like GIT_SUBMODULE_STATUS_IN_HEAD, etc) that tell you where the submodule data comes from (i.e. the HEAD commit, gitmodules file, etc.). This can be useful if you want to know if the submodule is present in the working directory at this point in time, etc.</p>\n","group":"submodule"},"git_commit_create_from_ids":{"type":"function","file":"sys/commit.h","line":34,"lineto":44,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_count","type":"size_t","comment":null},{"name":"parents","type":"const git_oid *[]","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, size_t parent_count, const git_oid *[] parents","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::size_t::const git_oid *[]","return":{"type":"int","comment":null},"description":"<p>Create new commit in the repository from a list of <code>git_oid</code> values.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> and <code>parents</code> now take <code>git_oid</code>.  This is a dangerous API in that nor the <code>tree</code>, neither the <code>parents</code> list of <code>git_oid</code>s are checked for validity.</p>\n","group":"commit"},"git_commit_create_from_callback":{"type":"function","file":"sys/commit.h","line":66,"lineto":76,"args":[{"name":"id","type":"git_oid *","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"update_ref","type":"const char *","comment":null},{"name":"author","type":"const git_signature *","comment":null},{"name":"committer","type":"const git_signature *","comment":null},{"name":"message_encoding","type":"const char *","comment":null},{"name":"message","type":"const char *","comment":null},{"name":"tree","type":"const git_oid *","comment":null},{"name":"parent_cb","type":"git_commit_parent_callback","comment":null},{"name":"parent_payload","type":"void *","comment":null}],"argline":"git_oid *id, git_repository *repo, const char *update_ref, const git_signature *author, const git_signature *committer, const char *message_encoding, const char *message, const git_oid *tree, git_commit_parent_callback parent_cb, void *parent_payload","sig":"git_oid *::git_repository *::const char *::const git_signature *::const git_signature *::const char *::const char *::const git_oid *::git_commit_parent_callback::void *","return":{"type":"int","comment":null},"description":"<p>Create a new commit in the repository with an callback to supply parents.</p>\n","comments":"<p>See documentation for <code>git_commit_create()</code> for information about the parameters, as the meaning is identical excepting that <code>tree</code> takes a <code>git_oid</code> and doesn&#39;t check for validity, and <code>parent_cb</code> is invoked with <code>parent_payload</code> and should return <code>git_oid</code> values or NULL to indicate that all parents are accounted for.</p>\n","group":"commit"},"git_config_init_backend":{"type":"function","file":"sys/config.h","line":97,"lineto":99,"args":[{"name":"backend","type":"git_config_backend *","comment":"the `git_config_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_CONFIG_BACKEND_VERSION`"}],"argline":"git_config_backend *backend, unsigned int version","sig":"git_config_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_config_backend</code> with default values. Equivalent to\n creating an instance with GIT_CONFIG_BACKEND_INIT.</p>\n","comments":"","group":"config"},"git_config_add_backend":{"type":"function","file":"sys/config.h","line":119,"lineto":123,"args":[{"name":"cfg","type":"git_config *","comment":"the configuration to add the file to"},{"name":"file","type":"git_config_backend *","comment":"the configuration file (backend) to add"},{"name":"level","type":"git_config_level_t","comment":"the priority level of the backend"},{"name":"force","type":"int","comment":"if a config file already exists for the given\n  priority level, replace it"}],"argline":"git_config *cfg, git_config_backend *file, git_config_level_t level, int force","sig":"git_config *::git_config_backend *::git_config_level_t::int","return":{"type":"int","comment":" 0 on success, GIT_EEXISTS when adding more than one file\n  for a given priority level (and force_replace set to 0), or error code"},"description":"<p>Add a generic config file instance to an existing config</p>\n","comments":"<p>Note that the configuration object will free the file automatically.</p>\n\n<p>Further queries on this config object will access each of the config file instances in order (instances with a higher priority level will be accessed first).</p>\n","group":"config"},"git_diff_print_callback__to_buf":{"type":"function","file":"sys/diff.h","line":37,"lineto":41,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to a git_buf.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a <code>git_buf</code> buffer.  You must pass a <code>git_buf *</code> value as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  The data will be appended to the buffer (after any existing content).</p>\n","group":"diff"},"git_diff_print_callback__to_file_handle":{"type":"function","file":"sys/diff.h","line":57,"lineto":61,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>Diff print callback that writes to stdio FILE handle.</p>\n","comments":"<p>This function is provided not for you to call it directly, but instead so you can use it as a function pointer to the <code>git_diff_print</code> or <code>git_patch_print</code> APIs.  When using those APIs, you specify a callback to actually handle the diff and/or patch data.</p>\n\n<p>Use this callback to easily write that data to a stdio FILE handle.  You must pass a <code>FILE *</code> value (such as <code>stdout</code> or <code>stderr</code> or the return value from <code>fopen()</code>) as the payload to the <code>git_diff_print</code> and/or <code>git_patch_print</code> function.  If you pass NULL, this will write data to <code>stdout</code>.</p>\n","group":"diff"},"git_diff_get_perfdata":{"type":"function","file":"sys/diff.h","line":83,"lineto":84,"args":[{"name":"out","type":"git_diff_perfdata *","comment":"Structure to be filled with diff performance data"},{"name":"diff","type":"const git_diff *","comment":"Diff to read performance data from"}],"argline":"git_diff_perfdata *out, const git_diff *diff","sig":"git_diff_perfdata *::const git_diff *","return":{"type":"int","comment":" 0 for success, \n<\n0 for error"},"description":"<p>Get performance data for a diff object.</p>\n","comments":"","group":"diff"},"git_status_list_get_perfdata":{"type":"function","file":"sys/diff.h","line":89,"lineto":90,"args":[{"name":"out","type":"git_diff_perfdata *","comment":null},{"name":"status","type":"const git_status_list *","comment":null}],"argline":"git_diff_perfdata *out, const git_status_list *status","sig":"git_diff_perfdata *::const git_status_list *","return":{"type":"int","comment":null},"description":"<p>Get performance data for diffs from a git_status_list</p>\n","comments":"","group":"status"},"git_filter_lookup":{"type":"function","file":"sys/filter.h","line":27,"lineto":27,"args":[{"name":"name","type":"const char *","comment":"The name of the filter"}],"argline":"const char *name","sig":"const char *","return":{"type":"git_filter *","comment":" Pointer to the filter object or NULL if not found"},"description":"<p>Look up a filter by name</p>\n","comments":"","group":"filter"},"git_filter_list_new":{"type":"function","file":"sys/filter.h","line":57,"lineto":61,"args":[{"name":"out","type":"git_filter_list **","comment":null},{"name":"repo","type":"git_repository *","comment":null},{"name":"mode","type":"git_filter_mode_t","comment":null},{"name":"options","type":"uint32_t","comment":null}],"argline":"git_filter_list **out, git_repository *repo, git_filter_mode_t mode, uint32_t options","sig":"git_filter_list **::git_repository *::git_filter_mode_t::uint32_t","return":{"type":"int","comment":null},"description":"<p>Create a new empty filter list</p>\n","comments":"<p>Normally you won&#39;t use this because <code>git_filter_list_load</code> will create the filter list for you, but you can use this in combination with the <code>git_filter_lookup</code> and <code>git_filter_list_push</code> functions to assemble your own chains of filters.</p>\n","group":"filter"},"git_filter_list_push":{"type":"function","file":"sys/filter.h","line":76,"lineto":77,"args":[{"name":"fl","type":"git_filter_list *","comment":null},{"name":"filter","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter_list *fl, git_filter *filter, void *payload","sig":"git_filter_list *::git_filter *::void *","return":{"type":"int","comment":null},"description":"<p>Add a filter to a filter list with the given payload.</p>\n","comments":"<p>Normally you won&#39;t have to do this because the filter list is created by calling the &quot;check&quot; function on registered filters when the filter attributes are set, but this does allow more direct manipulation of filter lists when desired.</p>\n\n<p>Note that normally the &quot;check&quot; function can set up a payload for the filter.  Using this function, you can either pass in a payload if you know the expected payload format, or you can pass NULL.  Some filters may fail with a NULL payload.  Good luck!</p>\n","group":"filter"},"git_filter_list_length":{"type":"function","file":"sys/filter.h","line":90,"lineto":90,"args":[{"name":"fl","type":"const git_filter_list *","comment":"A filter list"}],"argline":"const git_filter_list *fl","sig":"const git_filter_list *","return":{"type":"size_t","comment":" The number of filters in the list"},"description":"<p>Look up how many filters are in the list</p>\n","comments":"<p>We will attempt to apply all of these filters to any data passed in, but note that the filter apply action still has the option of skipping data that is passed in (for example, the CRLF filter will skip data that appears to be binary).</p>\n","group":"filter"},"git_filter_source_repo":{"type":"function","file":"sys/filter.h","line":100,"lineto":100,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_repository *","comment":null},"description":"<p>Get the repository that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_path":{"type":"function","file":"sys/filter.h","line":105,"lineto":105,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const char *","comment":null},"description":"<p>Get the path that the source data is coming from.</p>\n","comments":"","group":"filter"},"git_filter_source_filemode":{"type":"function","file":"sys/filter.h","line":111,"lineto":111,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint16_t","comment":null},"description":"<p>Get the file mode of the source file\n If the mode is unknown, this will return 0</p>\n","comments":"","group":"filter"},"git_filter_source_id":{"type":"function","file":"sys/filter.h","line":118,"lineto":118,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"const git_oid *","comment":null},"description":"<p>Get the OID of the source\n If the OID is unknown (often the case with GIT_FILTER_CLEAN) then\n this will return NULL.</p>\n","comments":"","group":"filter"},"git_filter_source_mode":{"type":"function","file":"sys/filter.h","line":123,"lineto":123,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"git_filter_mode_t","comment":null},"description":"<p>Get the git_filter_mode_t to be used</p>\n","comments":"","group":"filter"},"git_filter_source_flags":{"type":"function","file":"sys/filter.h","line":128,"lineto":128,"args":[{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"const git_filter_source *src","sig":"const git_filter_source *","return":{"type":"uint32_t","comment":null},"description":"<p>Get the combination git_filter_flag_t options to be applied</p>\n","comments":"","group":"filter"},"git_filter_register":{"type":"function","file":"sys/filter.h","line":301,"lineto":302,"args":[{"name":"name","type":"const char *","comment":"A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS."},{"name":"filter","type":"git_filter *","comment":"The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap)."},{"name":"priority","type":"int","comment":"The priority for filter application"}],"argline":"const char *name, git_filter *filter, int priority","sig":"const char *::git_filter *::int","return":{"type":"int","comment":" 0 on successful registry, error code \n<\n0 on failure"},"description":"<p>Register a filter under a given name with a given priority.</p>\n","comments":"<p>As mentioned elsewhere, the initialize callback will not be invoked immediately.  It is deferred until the filter is used in some way.</p>\n\n<p>A filter&#39;s attribute checks and <code>check</code> and <code>apply</code> callbacks will be issued in order of <code>priority</code> on smudge (to workdir), and in reverse order of <code>priority</code> on clean (to odb).</p>\n\n<p>Two filters are preregistered with libgit2: - GIT_FILTER_CRLF with priority 0 - GIT_FILTER_IDENT with priority 100</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_filter_unregister":{"type":"function","file":"sys/filter.h","line":317,"lineto":317,"args":[{"name":"name","type":"const char *","comment":"The name under which the filter was registered"}],"argline":"const char *name","sig":"const char *","return":{"type":"int","comment":" 0 on success, error code \n<\n0 on failure"},"description":"<p>Remove the filter with the given name</p>\n","comments":"<p>Attempting to remove the builtin libgit2 filters is not permitted and will return an error.</p>\n\n<p>Currently the filter registry is not thread safe, so any registering or deregistering of filters must be done outside of any possible usage of the filters (i.e. during application setup or shutdown).</p>\n","group":"filter"},"git_hashsig_create":{"type":"function","file":"sys/hashsig.h","line":62,"lineto":66,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"buf","type":"const char *","comment":"The input buffer."},{"name":"buflen","type":"size_t","comment":"The input buffer size."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *buf, size_t buflen, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::size_t::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text buffer</p>\n","comments":"<p>If you have passed the option GIT_HASHSIG_IGNORE_WHITESPACE, then the whitespace will be removed from the buffer while it is being processed, modifying the buffer in place. Sorry about that!</p>\n","group":"hashsig"},"git_hashsig_create_fromfile":{"type":"function","file":"sys/hashsig.h","line":81,"lineto":84,"args":[{"name":"out","type":"git_hashsig **","comment":"The computed similarity signature."},{"name":"path","type":"const char *","comment":"The path to the input file."},{"name":"opts","type":"git_hashsig_option_t","comment":"The signature computation options (see above)."}],"argline":"git_hashsig **out, const char *path, git_hashsig_option_t opts","sig":"git_hashsig **::const char *::git_hashsig_option_t","return":{"type":"int","comment":" 0 on success, GIT_EBUFS if the buffer doesn't contain enough data to\n compute a valid signature (unless GIT_HASHSIG_ALLOW_SMALL_FILES is set), or\n error code."},"description":"<p>Compute a similarity signature for a text file</p>\n","comments":"<p>This walks through the file, only loading a maximum of 4K of file data at a time. Otherwise, it acts just like <code>git_hashsig_create</code>.</p>\n","group":"hashsig"},"git_hashsig_free":{"type":"function","file":"sys/hashsig.h","line":91,"lineto":91,"args":[{"name":"sig","type":"git_hashsig *","comment":"The similarity signature to free."}],"argline":"git_hashsig *sig","sig":"git_hashsig *","return":{"type":"void","comment":null},"description":"<p>Release memory for a content similarity signature</p>\n","comments":"","group":"hashsig"},"git_hashsig_compare":{"type":"function","file":"sys/hashsig.h","line":100,"lineto":102,"args":[{"name":"a","type":"const git_hashsig *","comment":"The first similarity signature to compare."},{"name":"b","type":"const git_hashsig *","comment":"The second similarity signature to compare."}],"argline":"const git_hashsig *a, const git_hashsig *b","sig":"const git_hashsig *::const git_hashsig *","return":{"type":"int","comment":" [0 to 100] on success as the similarity score, or error code."},"description":"<p>Measure similarity score between two similarity signatures</p>\n","comments":"","group":"hashsig"},"git_mempack_new":{"type":"function","file":"sys/mempack.h","line":44,"lineto":44,"args":[{"name":"out","type":"git_odb_backend **","comment":"Poiter where to store the ODB backend"}],"argline":"git_odb_backend **out","sig":"git_odb_backend **","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<pre><code>Instantiate a new mempack backend.\n</code></pre>\n","comments":"<pre><code>The backend must be added to an existing ODB with the highest   priority.\n\n    git_mempack_new(&amp;mempacker);        git_repository_odb(&amp;odb, repository);       git_odb_add_backend(odb, mempacker, 999);\n\nOnce the backend has been loaded, all writes to the ODB will    instead be queued in memory, and can be finalized with  `git_mempack_dump`.\n\nSubsequent reads will also be served from the in-memory store   to ensure consistency, until the memory store is dumped.\n</code></pre>\n","group":"mempack"},"git_mempack_reset":{"type":"function","file":"sys/mempack.h","line":81,"lineto":81,"args":[{"name":"backend","type":"git_odb_backend *","comment":"The mempack backend"}],"argline":"git_odb_backend *backend","sig":"git_odb_backend *","return":{"type":"void","comment":null},"description":"<pre><code>Reset the memory packer by clearing all the queued objects.\n</code></pre>\n","comments":"<pre><code>This assumes that `git_mempack_dump` has been called before to  store all the queued objects into a single packfile.\n\nAlternatively, call `reset` without a previous dump to &quot;undo&quot;   all the recently written objects, giving transaction-like   semantics to the Git repository.\n</code></pre>\n","group":"mempack"},"git_odb_init_backend":{"type":"function","file":"sys/odb_backend.h","line":115,"lineto":117,"args":[{"name":"backend","type":"git_odb_backend *","comment":"the `git_odb_backend` struct to initialize."},{"name":"version","type":"unsigned int","comment":"Version the struct; pass `GIT_ODB_BACKEND_VERSION`"}],"argline":"git_odb_backend *backend, unsigned int version","sig":"git_odb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_odb_backend</code> with default values. Equivalent to\n creating an instance with GIT_ODB_BACKEND_INIT.</p>\n","comments":"","group":"odb"},"git_openssl_set_locking":{"type":"function","file":"sys/openssl.h","line":34,"lineto":34,"args":[],"argline":"","sig":"","return":{"type":"int","comment":" 0 on success, -1 if there are errors or if libgit2 was not\n built with OpenSSL and threading support."},"description":"<p>Initialize the OpenSSL locks</p>\n","comments":"<p>OpenSSL requires the application to determine how it performs locking.</p>\n\n<p>This is a last-resort convenience function which libgit2 provides for allocating and initializing the locks as well as setting the locking function to use the system&#39;s native locking functions.</p>\n\n<p>The locking function will be cleared and the memory will be freed when you call git_threads_sutdown().</p>\n\n<p>If your programming language has an OpenSSL package/bindings, it likely sets up locking. You should very strongly prefer that over this function.</p>\n","group":"openssl"},"git_refdb_init_backend":{"type":"function","file":"sys/refdb_backend.h","line":183,"lineto":185,"args":[{"name":"backend","type":"git_refdb_backend *","comment":"the `git_refdb_backend` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_REFDB_BACKEND_VERSION`"}],"argline":"git_refdb_backend *backend, unsigned int version","sig":"git_refdb_backend *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_refdb_backend</code> with default values. Equivalent to\n creating an instance with GIT_REFDB_BACKEND_INIT.</p>\n","comments":"","group":"refdb"},"git_refdb_backend_fs":{"type":"function","file":"sys/refdb_backend.h","line":198,"lineto":200,"args":[{"name":"backend_out","type":"git_refdb_backend **","comment":"Output pointer to the git_refdb_backend object"},{"name":"repo","type":"git_repository *","comment":"Git repository to access"}],"argline":"git_refdb_backend **backend_out, git_repository *repo","sig":"git_refdb_backend **::git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 error code on failure"},"description":"<p>Constructors for default filesystem-based refdb backend</p>\n","comments":"<p>Under normal usage, this is called for you when the repository is opened / created, but you can use this to explicitly construct a filesystem refdb backend for a repository.</p>\n","group":"refdb"},"git_refdb_set_backend":{"type":"function","file":"sys/refdb_backend.h","line":212,"lineto":214,"args":[{"name":"refdb","type":"git_refdb *","comment":"database to add the backend to"},{"name":"backend","type":"git_refdb_backend *","comment":"pointer to a git_refdb_backend instance"}],"argline":"git_refdb *refdb, git_refdb_backend *backend","sig":"git_refdb *::git_refdb_backend *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Sets the custom backend to an existing reference DB</p>\n","comments":"<p>The <code>git_refdb</code> will take ownership of the <code>git_refdb_backend</code> so you should NOT free it after calling this function.</p>\n","group":"refdb"},"git_reference__alloc":{"type":"function","file":"sys/refs.h","line":31,"lineto":34,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"oid","type":"const git_oid *","comment":"the object id for a direct reference"},{"name":"peel","type":"const git_oid *","comment":"the first non-tag object's OID, or NULL"}],"argline":"const char *name, const git_oid *oid, const git_oid *peel","sig":"const char *::const git_oid *::const git_oid *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new direct reference from an OID.</p>\n","comments":"","group":"reference"},"git_reference__alloc_symbolic":{"type":"function","file":"sys/refs.h","line":43,"lineto":45,"args":[{"name":"name","type":"const char *","comment":"the reference name"},{"name":"target","type":"const char *","comment":"the target for a symbolic reference"}],"argline":"const char *name, const char *target","sig":"const char *::const char *","return":{"type":"git_reference *","comment":" the created git_reference or NULL on error"},"description":"<p>Create a new symbolic reference.</p>\n","comments":"","group":"reference"},"git_repository_new":{"type":"function","file":"sys/repository.h","line":31,"lineto":31,"args":[{"name":"out","type":"git_repository **","comment":"The blank repository"}],"argline":"git_repository **out","sig":"git_repository **","return":{"type":"int","comment":" 0 on success, or an error code"},"description":"<p>Create a new repository with neither backends nor config object</p>\n","comments":"<p>Note that this is only useful if you wish to associate the repository with a non-filesystem-backed object database and config store.</p>\n","group":"repository"},"git_repository__cleanup":{"type":"function","file":"sys/repository.h","line":44,"lineto":44,"args":[{"name":"repo","type":"git_repository *","comment":null}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"void","comment":null},"description":"<p>Reset all the internal state in a repository.</p>\n","comments":"<p>This will free all the mapped memory and internal objects of the repository and leave it in a &quot;blank&quot; state.</p>\n\n<p>There&#39;s no need to call this function directly unless you&#39;re trying to aggressively cleanup the repo before its deallocation. <code>git_repository_free</code> already performs this operation before deallocation the repo.</p>\n","group":"repository"},"git_repository_reinit_filesystem":{"type":"function","file":"sys/repository.h","line":61,"lineto":63,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"recurse_submodules","type":"int","comment":"Should submodules be updated recursively"}],"argline":"git_repository *repo, int recurse_submodules","sig":"git_repository *::int","return":{"type":"int","comment":" 0 on success, \n<\n 0 on error"},"description":"<p>Update the filesystem config settings for an open repository</p>\n","comments":"<p>When a repository is initialized, config values are set based on the properties of the filesystem that the repository is on, such as &quot;core.ignorecase&quot;, &quot;core.filemode&quot;, &quot;core.symlinks&quot;, etc.  If the repository is moved to a new filesystem, these properties may no longer be correct and API calls may not behave as expected.  This call reruns the phase of repository initialization that sets those properties to compensate for the current filesystem of the repo.</p>\n","group":"repository"},"git_repository_set_config":{"type":"function","file":"sys/repository.h","line":78,"lineto":78,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"config","type":"git_config *","comment":"A Config object"}],"argline":"git_repository *repo, git_config *config","sig":"git_repository *::git_config *","return":{"type":"void","comment":null},"description":"<p>Set the configuration file for this repository</p>\n","comments":"<p>This configuration file will be used for all configuration queries involving this repository.</p>\n\n<p>The repository will keep a reference to the config file; the user must still free the config after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_odb":{"type":"function","file":"sys/repository.h","line":93,"lineto":93,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"odb","type":"git_odb *","comment":"An ODB object"}],"argline":"git_repository *repo, git_odb *odb","sig":"git_repository *::git_odb *","return":{"type":"void","comment":null},"description":"<p>Set the Object Database for this repository</p>\n","comments":"<p>The ODB will be used for all object-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the ODB; the user must still free the ODB object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_refdb":{"type":"function","file":"sys/repository.h","line":108,"lineto":108,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"refdb","type":"git_refdb *","comment":"An refdb object"}],"argline":"git_repository *repo, git_refdb *refdb","sig":"git_repository *::git_refdb *","return":{"type":"void","comment":null},"description":"<p>Set the Reference Database Backend for this repository</p>\n","comments":"<p>The refdb will be used for all reference related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the refdb; the user must still free the refdb object after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_index":{"type":"function","file":"sys/repository.h","line":123,"lineto":123,"args":[{"name":"repo","type":"git_repository *","comment":"A repository object"},{"name":"index","type":"git_index *","comment":"An index object"}],"argline":"git_repository *repo, git_index *index","sig":"git_repository *::git_index *","return":{"type":"void","comment":null},"description":"<p>Set the index file for this repository</p>\n","comments":"<p>This index will be used for all index-related operations involving this repository.</p>\n\n<p>The repository will keep a reference to the index file; the user must still free the index after setting it to the repository, or it will leak.</p>\n","group":"repository"},"git_repository_set_bare":{"type":"function","file":"sys/repository.h","line":136,"lineto":136,"args":[{"name":"repo","type":"git_repository *","comment":"Repo to make bare"}],"argline":"git_repository *repo","sig":"git_repository *","return":{"type":"int","comment":" 0 on success, \n<\n0 on failure"},"description":"<p>Set a repository to be bare.</p>\n","comments":"<p>Clear the working directory and set core.bare to true.  You may also want to call <code>git_repository_set_index(repo, NULL)</code> since a bare repo typically does not have an index, but this function will not do that for you.</p>\n","group":"repository"},"git_stream_register_tls":{"type":"function","file":"sys/stream.h","line":54,"lineto":54,"args":[{"name":"ctor","type":"git_stream_cb","comment":"the constructor to use"}],"argline":"git_stream_cb ctor","sig":"git_stream_cb","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Register a TLS stream constructor for the library to use</p>\n","comments":"<p>If a constructor is already set, it will be overwritten. Pass <code>NULL</code> in order to deregister the current constructor.</p>\n","group":"stream"},"git_time_monotonic":{"type":"function","file":"sys/time.h","line":27,"lineto":27,"args":[],"argline":"","sig":"","return":{"type":"double","comment":null},"description":"<p>Return a monotonic time value, useful for measuring running time\n and setting up timeouts.</p>\n","comments":"<p>The returned value is an arbitrary point in time -- it can only be used when comparing it to another <code>git_time_monotonic</code> call.</p>\n\n<p>The time is returned in seconds, with a decimal fraction that differs on accuracy based on the underlying system, but should be least accurate to Nanoseconds.</p>\n\n<p>This function cannot fail.</p>\n","group":"time"},"git_transport_init":{"type":"function","file":"sys/transport.h","line":119,"lineto":121,"args":[{"name":"opts","type":"git_transport *","comment":"the `git_transport` struct to initialize"},{"name":"version","type":"unsigned int","comment":"Version of struct; pass `GIT_TRANSPORT_VERSION`"}],"argline":"git_transport *opts, unsigned int version","sig":"git_transport *::unsigned int","return":{"type":"int","comment":" Zero on success; -1 on failure."},"description":"<p>Initializes a <code>git_transport</code> with default values. Equivalent to\n creating an instance with GIT_TRANSPORT_INIT.</p>\n","comments":"","group":"transport"},"git_transport_new":{"type":"function","file":"sys/transport.h","line":133,"lineto":133,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"url","type":"const char *","comment":"The URL to connect to"}],"argline":"git_transport **out, git_remote *owner, const char *url","sig":"git_transport **::git_remote *::const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Function to use to create a transport from a URL. The transport database\n is scanned to find a transport that implements the scheme of the URI (i.e.\n git:// or http://) and a transport object is returned to the caller.</p>\n","comments":"","group":"transport"},"git_transport_ssh_with_paths":{"type":"function","file":"sys/transport.h","line":149,"lineto":149,"args":[{"name":"out","type":"git_transport **","comment":"the resulting transport"},{"name":"owner","type":"git_remote *","comment":"the owning remote"},{"name":"payload","type":"void *","comment":"a strarray with the paths"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an ssh transport with custom git command paths</p>\n","comments":"<p>This is a factory function suitable for setting as the transport callback in a remote (or for a clone in the options).</p>\n\n<p>The payload argument must be a strarray pointer with the paths for the <code>git-upload-pack</code> and <code>git-receive-pack</code> at index 0 and 1.</p>\n","group":"transport"},"git_transport_unregister":{"type":"function","file":"sys/transport.h","line":177,"lineto":178,"args":[{"name":"prefix","type":"const char *","comment":"From the previous call to git_transport_register"}],"argline":"const char *prefix","sig":"const char *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Unregister a custom transport definition which was previously registered\n with git_transport_register.</p>\n","comments":"","group":"transport"},"git_transport_dummy":{"type":"function","file":"sys/transport.h","line":191,"lineto":194,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the dummy transport.</p>\n","comments":"","group":"transport"},"git_transport_local":{"type":"function","file":"sys/transport.h","line":204,"lineto":207,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"You must pass NULL for this parameter."}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the local transport.</p>\n","comments":"","group":"transport"},"git_transport_smart":{"type":"function","file":"sys/transport.h","line":217,"lineto":220,"args":[{"name":"out","type":"git_transport **","comment":"The newly created transport (out)"},{"name":"owner","type":"git_remote *","comment":"The git_remote which will own this transport"},{"name":"payload","type":"void *","comment":"A pointer to a git_smart_subtransport_definition"}],"argline":"git_transport **out, git_remote *owner, void *payload","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the smart transport.</p>\n","comments":"","group":"transport"},"git_transport_smart_certificate_check":{"type":"function","file":"sys/transport.h","line":231,"lineto":231,"args":[{"name":"transport","type":"git_transport *","comment":"a smart transport"},{"name":"cert","type":"git_cert *","comment":"the certificate to pass to the caller"},{"name":"valid","type":"int","comment":"whether we believe the certificate is valid"},{"name":"hostname","type":"const char *","comment":"the hostname we connected to"}],"argline":"git_transport *transport, git_cert *cert, int valid, const char *hostname","sig":"git_transport *::git_cert *::int::const char *","return":{"type":"int","comment":" the return value of the callback"},"description":"<p>Call the certificate check for this transport.</p>\n","comments":"","group":"transport"},"git_smart_subtransport_http":{"type":"function","file":"sys/transport.h","line":352,"lineto":355,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the http subtransport. This subtransport\n also supports https. On Win32, this subtransport may be implemented\n using the WinHTTP library.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_git":{"type":"function","file":"sys/transport.h","line":364,"lineto":367,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the git subtransport.</p>\n","comments":"","group":"smart"},"git_smart_subtransport_ssh":{"type":"function","file":"sys/transport.h","line":376,"lineto":379,"args":[{"name":"out","type":"git_smart_subtransport **","comment":"The newly created subtransport"},{"name":"owner","type":"git_transport *","comment":"The smart transport to own this subtransport"},{"name":"param","type":"void *","comment":null}],"argline":"git_smart_subtransport **out, git_transport *owner, void *param","sig":"git_smart_subtransport **::git_transport *::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Create an instance of the ssh subtransport.</p>\n","comments":"","group":"smart"},"git_tag_lookup":{"type":"function","file":"tag.h","line":33,"lineto":34,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."}],"argline":"git_tag **out, git_repository *repo, const git_oid *id","sig":"git_tag **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository.</p>\n","comments":"","group":"tag","examples":{"general.c":["ex/v0.25.1/general.html#git_tag_lookup-72"]}},"git_tag_lookup_prefix":{"type":"function","file":"tag.h","line":48,"lineto":49,"args":[{"name":"out","type":"git_tag **","comment":"pointer to the looked up tag"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tag."},{"name":"id","type":"const git_oid *","comment":"identity of the tag to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tag **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tag **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tag object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tag"},"git_tag_free":{"type":"function","file":"tag.h","line":61,"lineto":61,"args":[{"name":"tag","type":"git_tag *","comment":"the tag to close"}],"argline":"git_tag *tag","sig":"git_tag *","return":{"type":"void","comment":null},"description":"<p>Close an open tag</p>\n","comments":"<p>You can no longer use the git_tag pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you are through with a tag to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tag"},"git_tag_id":{"type":"function","file":"tag.h","line":69,"lineto":69,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" object identity for the tag."},"description":"<p>Get the id of a tag.</p>\n","comments":"","group":"tag"},"git_tag_owner":{"type":"function","file":"tag.h","line":77,"lineto":77,"args":[{"name":"tag","type":"const git_tag *","comment":"A previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_repository *","comment":" Repository that contains this tag."},"description":"<p>Get the repository that contains the tag.</p>\n","comments":"","group":"tag"},"git_tag_target":{"type":"function","file":"tag.h","line":89,"lineto":89,"args":[{"name":"target_out","type":"git_object **","comment":"pointer where to store the target"},{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"git_object **target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Get the tagged object of a tag</p>\n","comments":"<p>This method performs a repository lookup for the given object and returns it</p>\n","group":"tag","examples":{"general.c":["ex/v0.25.1/general.html#git_tag_target-73"]}},"git_tag_target_id":{"type":"function","file":"tag.h","line":97,"lineto":97,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_oid *","comment":" pointer to the OID"},"description":"<p>Get the OID of the tagged object of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tag_target_id-35"]}},"git_tag_target_type":{"type":"function","file":"tag.h","line":105,"lineto":105,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"git_otype","comment":" type of the tagged object"},"description":"<p>Get the type of a tag&#39;s tagged object</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tag_target_type-36"],"general.c":["ex/v0.25.1/general.html#git_tag_target_type-74"]}},"git_tag_name":{"type":"function","file":"tag.h","line":113,"lineto":113,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" name of the tag"},"description":"<p>Get the name of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tag_name-37"],"general.c":["ex/v0.25.1/general.html#git_tag_name-75"],"tag.c":["ex/v0.25.1/tag.html#git_tag_name-20"]}},"git_tag_tagger":{"type":"function","file":"tag.h","line":121,"lineto":121,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const git_signature *","comment":" reference to the tag's author or NULL when unspecified"},"description":"<p>Get the tagger (author) of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tag_tagger-38"]}},"git_tag_message":{"type":"function","file":"tag.h","line":129,"lineto":129,"args":[{"name":"tag","type":"const git_tag *","comment":"a previously loaded tag."}],"argline":"const git_tag *tag","sig":"const git_tag *","return":{"type":"const char *","comment":" message of the tag or NULL when unspecified"},"description":"<p>Get the message of a tag</p>\n","comments":"","group":"tag","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tag_message-39","ex/v0.25.1/cat-file.html#git_tag_message-40"],"general.c":["ex/v0.25.1/general.html#git_tag_message-76"],"tag.c":["ex/v0.25.1/tag.html#git_tag_message-21"]}},"git_tag_create":{"type":"function","file":"tag.h","line":171,"lineto":178,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it"},"description":"<p>Create a new tag in the repository from an object</p>\n","comments":"<p>A new reference will also be created pointing to this tag object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n\n<p>The tag name will be checked for validity. You must avoid the characters &#39;~&#39;, &#39;^&#39;, &#39;:&#39;, &#39;\\&#39;, &#39;?&#39;, &#39;[&#39;, and &#39;*&#39;, and the sequences &quot;..&quot; and &quot;@{&quot; which have special meaning to revparse.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.1/tag.html#git_tag_create-22"]}},"git_tag_annotation_create":{"type":"function","file":"tag.h","line":203,"lineto":209,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the\n newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"tagger","type":"const git_signature *","comment":"Signature of the tagger for this tag, and\n of the tagging time"},{"name":"message","type":"const char *","comment":"Full message for this tag"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, const git_signature *tagger, const char *message","sig":"git_oid *::git_repository *::const char *::const git_object *::const git_signature *::const char *","return":{"type":"int","comment":" 0 on success or an error code"},"description":"<p>Create a new tag in the object database pointing to a git_object</p>\n","comments":"<p>The message will not be cleaned up. This can be achieved through <code>git_message_prettify()</code>.</p>\n","group":"tag"},"git_tag_create_frombuffer":{"type":"function","file":"tag.h","line":220,"lineto":224,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the newly created tag"},{"name":"repo","type":"git_repository *","comment":"Repository where to store the tag"},{"name":"buffer","type":"const char *","comment":"Raw tag data"},{"name":"force","type":"int","comment":"Overwrite existing tags"}],"argline":"git_oid *oid, git_repository *repo, const char *buffer, int force","sig":"git_oid *::git_repository *::const char *::int","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tag in the repository from a buffer</p>\n","comments":"","group":"tag"},"git_tag_create_lightweight":{"type":"function","file":"tag.h","line":256,"lineto":261,"args":[{"name":"oid","type":"git_oid *","comment":"Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code."},{"name":"repo","type":"git_repository *","comment":"Repository where to store the lightweight tag"},{"name":"tag_name","type":"const char *","comment":"Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name"},{"name":"target","type":"const git_object *","comment":"Object to which this tag points. This object\n must belong to the given `repo`."},{"name":"force","type":"int","comment":"Overwrite existing references"}],"argline":"git_oid *oid, git_repository *repo, const char *tag_name, const git_object *target, int force","sig":"git_oid *::git_repository *::const char *::const git_object *::int","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object"},"description":"<p>Create a new lightweight tag pointing at a target object</p>\n","comments":"<p>A new direct reference will be created pointing to this target object. If <code>force</code> is true and a reference already exists with the given name, it&#39;ll be replaced.</p>\n\n<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.1/tag.html#git_tag_create_lightweight-23"]}},"git_tag_delete":{"type":"function","file":"tag.h","line":276,"lineto":278,"args":[{"name":"repo","type":"git_repository *","comment":"Repository where lives the tag"},{"name":"tag_name","type":"const char *","comment":"Name of the tag to be deleted;\n this name is validated for consistency."}],"argline":"git_repository *repo, const char *tag_name","sig":"git_repository *::const char *","return":{"type":"int","comment":" 0 on success, GIT_EINVALIDSPEC or an error code"},"description":"<p>Delete an existing tag reference.</p>\n","comments":"<p>The tag name will be checked for validity. See <code>git_tag_create()</code> for rules about valid names.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.1/tag.html#git_tag_delete-24"]}},"git_tag_list":{"type":"function","file":"tag.h","line":293,"lineto":295,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, git_repository *repo","sig":"git_strarray *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository</p>\n","comments":"<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag"},"git_tag_list_match":{"type":"function","file":"tag.h","line":315,"lineto":318,"args":[{"name":"tag_names","type":"git_strarray *","comment":"Pointer to a git_strarray structure where\n\t\tthe tag names will be stored"},{"name":"pattern","type":"const char *","comment":"Standard fnmatch pattern"},{"name":"repo","type":"git_repository *","comment":"Repository where to find the tags"}],"argline":"git_strarray *tag_names, const char *pattern, git_repository *repo","sig":"git_strarray *::const char *::git_repository *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Fill a list with all the tags in the Repository\n which name match a defined pattern</p>\n","comments":"<p>If an empty pattern is provided, all the tags will be returned.</p>\n\n<p>The string array will be filled with the names of the matching tags; these values are owned by the user and should be free&#39;d manually when no longer needed, using <code>git_strarray_free</code>.</p>\n","group":"tag","examples":{"tag.c":["ex/v0.25.1/tag.html#git_tag_list_match-25"]}},"git_tag_foreach":{"type":"function","file":"tag.h","line":330,"lineto":333,"args":[{"name":"repo","type":"git_repository *","comment":"Repository"},{"name":"callback","type":"git_tag_foreach_cb","comment":"Callback function"},{"name":"payload","type":"void *","comment":"Pointer to callback data (optional)"}],"argline":"git_repository *repo, git_tag_foreach_cb callback, void *payload","sig":"git_repository *::git_tag_foreach_cb::void *","return":{"type":"int","comment":null},"description":"<p>Call callback `cb&#39; for each tag in the repository</p>\n","comments":"","group":"tag"},"git_tag_peel":{"type":"function","file":"tag.h","line":346,"lineto":348,"args":[{"name":"tag_target_out","type":"git_object **","comment":"Pointer to the peeled git_object"},{"name":"tag","type":"const git_tag *","comment":"The tag to be processed"}],"argline":"git_object **tag_target_out, const git_tag *tag","sig":"git_object **::const git_tag *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Recursively peel a tag until a non tag git_object is found</p>\n","comments":"<p>The retrieved <code>tag_target</code> object is owned by the repository and should be closed with the <code>git_object_free</code> method.</p>\n","group":"tag"},"git_tag_dup":{"type":"function","file":"tag.h","line":357,"lineto":357,"args":[{"name":"out","type":"git_tag **","comment":"Pointer to store the copy of the tag"},{"name":"source","type":"git_tag *","comment":"Original tag to copy"}],"argline":"git_tag **out, git_tag *source","sig":"git_tag **::git_tag *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tag. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tag"},"git_trace_set":{"type":"function","file":"trace.h","line":63,"lineto":63,"args":[{"name":"level","type":"git_trace_level_t","comment":"Level to set tracing to"},{"name":"cb","type":"git_trace_callback","comment":"Function to call with trace data"}],"argline":"git_trace_level_t level, git_trace_callback cb","sig":"git_trace_level_t::git_trace_callback","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Sets the system tracing configuration to the specified level with the\n specified callback.  When system events occur at a level equal to, or\n lower than, the given level they will be reported to the given callback.</p>\n","comments":"","group":"trace"},"git_cred_has_username":{"type":"function","file":"transport.h","line":190,"lineto":190,"args":[{"name":"cred","type":"git_cred *","comment":"object to check"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"int","comment":" 1 if the credential object has non-NULL username, 0 otherwise"},"description":"<p>Check whether a credential object contains username information.</p>\n","comments":"","group":"cred"},"git_cred_userpass_plaintext_new":{"type":"function","file":"transport.h","line":201,"lineto":204,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"The username of the credential."},{"name":"password","type":"const char *","comment":"The password of the credential."}],"argline":"git_cred **out, const char *username, const char *password","sig":"git_cred **::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new plain-text username and password credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_new":{"type":"function","file":"transport.h","line":217,"lineto":222,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The path to the public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The path to the private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new passphrase-protected ssh key credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_interactive_new":{"type":"function","file":"transport.h","line":233,"lineto":237,"args":[{"name":"out","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":"Username to use to authenticate."},{"name":"prompt_callback","type":"git_cred_ssh_interactive_callback","comment":"The callback method used for prompts."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, git_cred_ssh_interactive_callback prompt_callback, void *payload","sig":"git_cred **::const char *::git_cred_ssh_interactive_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure."},"description":"<p>Create a new ssh keyboard-interactive based credential object.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_key_from_agent":{"type":"function","file":"transport.h","line":247,"lineto":249,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"}],"argline":"git_cred **out, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object used for querying an ssh-agent.\n The supplied credential parameter will be internally duplicated.</p>\n","comments":"","group":"cred"},"git_cred_ssh_custom_new":{"type":"function","file":"transport.h","line":269,"lineto":275,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate"},{"name":"publickey","type":"const char *","comment":"The bytes of the public key."},{"name":"publickey_len","type":"size_t","comment":"The length of the public key in bytes."},{"name":"sign_callback","type":"git_cred_sign_callback","comment":"The callback method to sign the data during the challenge."},{"name":"payload","type":"void *","comment":"Additional data to pass to the callback."}],"argline":"git_cred **out, const char *username, const char *publickey, size_t publickey_len, git_cred_sign_callback sign_callback, void *payload","sig":"git_cred **::const char *::const char *::size_t::git_cred_sign_callback::void *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create an ssh key credential with a custom signing function.</p>\n","comments":"<p>This lets you use your own function to sign the challenge.</p>\n\n<p>This function and its credential type is provided for completeness and wraps <code>libssh2_userauth_publickey()</code>, which is undocumented.</p>\n\n<p>The supplied credential parameter will be internally duplicated.</p>\n","group":"cred"},"git_cred_default_new":{"type":"function","file":"transport.h","line":283,"lineto":283,"args":[{"name":"out","type":"git_cred **","comment":null}],"argline":"git_cred **out","sig":"git_cred **","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a &quot;default&quot; credential usable for Negotiate mechanisms like NTLM\n or Kerberos authentication.</p>\n","comments":"","group":"cred"},"git_cred_username_new":{"type":"function","file":"transport.h","line":291,"lineto":291,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"username","type":"const char *","comment":null}],"argline":"git_cred **cred, const char *username","sig":"git_cred **::const char *","return":{"type":"int","comment":null},"description":"<p>Create a credential to specify a username.</p>\n","comments":"<p>This is used with ssh authentication to query for the username if none is specified in the url.</p>\n","group":"cred"},"git_cred_ssh_key_memory_new":{"type":"function","file":"transport.h","line":303,"lineto":308,"args":[{"name":"out","type":"git_cred **","comment":"The newly created credential object."},{"name":"username","type":"const char *","comment":"username to use to authenticate."},{"name":"publickey","type":"const char *","comment":"The public key of the credential."},{"name":"privatekey","type":"const char *","comment":"The private key of the credential."},{"name":"passphrase","type":"const char *","comment":"The passphrase of the credential."}],"argline":"git_cred **out, const char *username, const char *publickey, const char *privatekey, const char *passphrase","sig":"git_cred **::const char *::const char *::const char *::const char *","return":{"type":"int","comment":" 0 for success or an error code for failure"},"description":"<p>Create a new ssh key credential object reading the keys from memory.</p>\n","comments":"","group":"cred"},"git_cred_free":{"type":"function","file":"transport.h","line":319,"lineto":319,"args":[{"name":"cred","type":"git_cred *","comment":"the object to free"}],"argline":"git_cred *cred","sig":"git_cred *","return":{"type":"void","comment":null},"description":"<p>Free a credential.</p>\n","comments":"<p>This is only necessary if you own the object; that is, if you are a transport.</p>\n","group":"cred"},"git_tree_lookup":{"type":"function","file":"tree.h","line":32,"lineto":33,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"The repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"Identity of the tree to locate."}],"argline":"git_tree **out, git_repository *repo, const git_oid *id","sig":"git_tree **::git_repository *::const git_oid *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository.</p>\n","comments":"","group":"tree","examples":{"general.c":["ex/v0.25.1/general.html#git_tree_lookup-77","ex/v0.25.1/general.html#git_tree_lookup-78"],"init.c":["ex/v0.25.1/init.html#git_tree_lookup-14"]}},"git_tree_lookup_prefix":{"type":"function","file":"tree.h","line":47,"lineto":51,"args":[{"name":"out","type":"git_tree **","comment":"pointer to the looked up tree"},{"name":"repo","type":"git_repository *","comment":"the repo to use when locating the tree."},{"name":"id","type":"const git_oid *","comment":"identity of the tree to locate."},{"name":"len","type":"size_t","comment":"the length of the short identifier"}],"argline":"git_tree **out, git_repository *repo, const git_oid *id, size_t len","sig":"git_tree **::git_repository *::const git_oid *::size_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Lookup a tree object from the repository,\n given a prefix of its identifier (short id).</p>\n","comments":"","group":"tree"},"git_tree_free":{"type":"function","file":"tree.h","line":63,"lineto":63,"args":[{"name":"tree","type":"git_tree *","comment":"The tree to close"}],"argline":"git_tree *tree","sig":"git_tree *","return":{"type":"void","comment":null},"description":"<p>Close an open tree</p>\n","comments":"<p>You can no longer use the git_tree pointer after this call.</p>\n\n<p>IMPORTANT: You MUST call this method when you stop using a tree to release memory. Failure to do so will cause a memory leak.</p>\n","group":"tree","examples":{"diff.c":["ex/v0.25.1/diff.html#git_tree_free-17","ex/v0.25.1/diff.html#git_tree_free-18"],"init.c":["ex/v0.25.1/init.html#git_tree_free-15"],"log.c":["ex/v0.25.1/log.html#git_tree_free-58","ex/v0.25.1/log.html#git_tree_free-59","ex/v0.25.1/log.html#git_tree_free-60","ex/v0.25.1/log.html#git_tree_free-61","ex/v0.25.1/log.html#git_tree_free-62"]}},"git_tree_id":{"type":"function","file":"tree.h","line":71,"lineto":71,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"const git_oid *","comment":" object identity for the tree."},"description":"<p>Get the id of a tree.</p>\n","comments":"","group":"tree"},"git_tree_owner":{"type":"function","file":"tree.h","line":79,"lineto":79,"args":[{"name":"tree","type":"const git_tree *","comment":"A previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"git_repository *","comment":" Repository that contains this tree."},"description":"<p>Get the repository that contains the tree.</p>\n","comments":"","group":"tree"},"git_tree_entrycount":{"type":"function","file":"tree.h","line":87,"lineto":87,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."}],"argline":"const git_tree *tree","sig":"const git_tree *","return":{"type":"size_t","comment":" the number of entries in the tree"},"description":"<p>Get the number of entries listed in a tree</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entrycount-41"],"general.c":["ex/v0.25.1/general.html#git_tree_entrycount-79"]}},"git_tree_entry_byname":{"type":"function","file":"tree.h","line":99,"lineto":100,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"filename","type":"const char *","comment":"the filename of the desired entry"}],"argline":"const git_tree *tree, const char *filename","sig":"const git_tree *::const char *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its filename</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"general.c":["ex/v0.25.1/general.html#git_tree_entry_byname-80"]}},"git_tree_entry_byindex":{"type":"function","file":"tree.h","line":112,"lineto":113,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"idx","type":"size_t","comment":"the position in the entry list"}],"argline":"const git_tree *tree, size_t idx","sig":"const git_tree *::size_t","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by its position in the tree</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entry_byindex-42"],"general.c":["ex/v0.25.1/general.html#git_tree_entry_byindex-81"]}},"git_tree_entry_byid":{"type":"function","file":"tree.h","line":127,"lineto":128,"args":[{"name":"tree","type":"const git_tree *","comment":"a previously loaded tree."},{"name":"id","type":"const git_oid *","comment":"the sha being looked for"}],"argline":"const git_tree *tree, const git_oid *id","sig":"const git_tree *::const git_oid *","return":{"type":"const git_tree_entry *","comment":" the tree entry; NULL if not found"},"description":"<p>Lookup a tree entry by SHA value.</p>\n","comments":"<p>This returns a git_tree_entry that is owned by the git_tree.  You don&#39;t have to free it, but you must not use it after the git_tree is released.</p>\n\n<p>Warning: this must examine every entry in the tree, so it is not fast.</p>\n","group":"tree"},"git_tree_entry_bypath":{"type":"function","file":"tree.h","line":142,"lineto":145,"args":[{"name":"out","type":"git_tree_entry **","comment":"Pointer where to store the tree entry"},{"name":"root","type":"const git_tree *","comment":"Previously loaded tree which is the root of the relative path"},{"name":"path","type":"const char *","comment":"Path to the contained entry"}],"argline":"git_tree_entry **out, const git_tree *root, const char *path","sig":"git_tree_entry **::const git_tree *::const char *","return":{"type":"int","comment":" 0 on success; GIT_ENOTFOUND if the path does not exist"},"description":"<p>Retrieve a tree entry contained in a tree or in any of its subtrees,\n given its relative path.</p>\n","comments":"<p>Unlike the other lookup functions, the returned tree entry is owned by the user and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_dup":{"type":"function","file":"tree.h","line":157,"lineto":157,"args":[{"name":"dest","type":"git_tree_entry **","comment":"pointer where to store the copy"},{"name":"source","type":"const git_tree_entry *","comment":"tree entry to duplicate"}],"argline":"git_tree_entry **dest, const git_tree_entry *source","sig":"git_tree_entry **::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Duplicate a tree entry</p>\n","comments":"<p>Create a copy of a tree entry. The returned copy is owned by the user, and must be freed explicitly with <code>git_tree_entry_free()</code>.</p>\n","group":"tree"},"git_tree_entry_free":{"type":"function","file":"tree.h","line":168,"lineto":168,"args":[{"name":"entry","type":"git_tree_entry *","comment":"The entry to free"}],"argline":"git_tree_entry *entry","sig":"git_tree_entry *","return":{"type":"void","comment":null},"description":"<p>Free a user-owned tree entry</p>\n","comments":"<p>IMPORTANT: This function is only needed for tree entries owned by the user, such as the ones returned by <code>git_tree_entry_dup()</code> or <code>git_tree_entry_bypath()</code>.</p>\n","group":"tree"},"git_tree_entry_name":{"type":"function","file":"tree.h","line":176,"lineto":176,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const char *","comment":" the name of the file"},"description":"<p>Get the filename of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entry_name-43"],"general.c":["ex/v0.25.1/general.html#git_tree_entry_name-82","ex/v0.25.1/general.html#git_tree_entry_name-83"]}},"git_tree_entry_id":{"type":"function","file":"tree.h","line":184,"lineto":184,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"const git_oid *","comment":" the oid of the object"},"description":"<p>Get the id of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entry_id-44"]}},"git_tree_entry_type":{"type":"function","file":"tree.h","line":192,"lineto":192,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_otype","comment":" the type of the pointed object"},"description":"<p>Get the type of the object pointed by the entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entry_type-45"]}},"git_tree_entry_filemode":{"type":"function","file":"tree.h","line":200,"lineto":200,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the UNIX file attributes of a tree entry</p>\n","comments":"","group":"tree","examples":{"cat-file.c":["ex/v0.25.1/cat-file.html#git_tree_entry_filemode-46"]}},"git_tree_entry_filemode_raw":{"type":"function","file":"tree.h","line":212,"lineto":212,"args":[{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"const git_tree_entry *entry","sig":"const git_tree_entry *","return":{"type":"git_filemode_t","comment":" filemode as an integer"},"description":"<p>Get the raw UNIX file attributes of a tree entry</p>\n","comments":"<p>This function does not perform any normalization and is only useful if you need to be able to recreate the original tree object.</p>\n","group":"tree"},"git_tree_entry_cmp":{"type":"function","file":"tree.h","line":220,"lineto":220,"args":[{"name":"e1","type":"const git_tree_entry *","comment":"first tree entry"},{"name":"e2","type":"const git_tree_entry *","comment":"second tree entry"}],"argline":"const git_tree_entry *e1, const git_tree_entry *e2","sig":"const git_tree_entry *::const git_tree_entry *","return":{"type":"int","comment":" \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2"},"description":"<p>Compare two tree entries</p>\n","comments":"","group":"tree"},"git_tree_entry_to_object":{"type":"function","file":"tree.h","line":232,"lineto":235,"args":[{"name":"object_out","type":"git_object **","comment":"pointer to the converted object"},{"name":"repo","type":"git_repository *","comment":"repository where to lookup the pointed object"},{"name":"entry","type":"const git_tree_entry *","comment":"a tree entry"}],"argline":"git_object **object_out, git_repository *repo, const git_tree_entry *entry","sig":"git_object **::git_repository *::const git_tree_entry *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Convert a tree entry to the git_object it points to.</p>\n","comments":"<p>You must call <code>git_object_free()</code> on the object when you are done with it.</p>\n","group":"tree","examples":{"general.c":["ex/v0.25.1/general.html#git_tree_entry_to_object-84"]}},"git_treebuilder_new":{"type":"function","file":"tree.h","line":254,"lineto":255,"args":[{"name":"out","type":"git_treebuilder **","comment":"Pointer where to store the tree builder"},{"name":"repo","type":"git_repository *","comment":"Repository in which to store the object"},{"name":"source","type":"const git_tree *","comment":"Source tree to initialize the builder (optional)"}],"argline":"git_treebuilder **out, git_repository *repo, const git_tree *source","sig":"git_treebuilder **::git_repository *::const git_tree *","return":{"type":"int","comment":" 0 on success; error code otherwise"},"description":"<p>Create a new tree builder.</p>\n","comments":"<p>The tree builder can be used to create or modify trees in memory and write them as tree objects to the database.</p>\n\n<p>If the <code>source</code> parameter is not NULL, the tree builder will be initialized with the entries of the given tree.</p>\n\n<p>If the <code>source</code> parameter is NULL, the tree builder will start with no entries and will have to be filled manually.</p>\n","group":"treebuilder"},"git_treebuilder_clear":{"type":"function","file":"tree.h","line":262,"lineto":262,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to clear"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Clear all the entires in the builder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_entrycount":{"type":"function","file":"tree.h","line":270,"lineto":270,"args":[{"name":"bld","type":"git_treebuilder *","comment":"a previously loaded treebuilder."}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"unsigned int","comment":" the number of entries in the treebuilder"},"description":"<p>Get the number of entries listed in a treebuilder</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_free":{"type":"function","file":"tree.h","line":281,"lineto":281,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Builder to free"}],"argline":"git_treebuilder *bld","sig":"git_treebuilder *","return":{"type":"void","comment":null},"description":"<p>Free a tree builder</p>\n","comments":"<p>This will clear all the entries and free to builder. Failing to free the builder after you&#39;re done using it will result in a memory leak</p>\n","group":"treebuilder"},"git_treebuilder_get":{"type":"function","file":"tree.h","line":293,"lineto":294,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Name of the entry"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"const git_tree_entry *","comment":" pointer to the entry; NULL if not found"},"description":"<p>Get an entry from the builder from its filename</p>\n","comments":"<p>The returned entry is owned by the builder and should not be freed manually.</p>\n","group":"treebuilder"},"git_treebuilder_insert":{"type":"function","file":"tree.h","line":323,"lineto":328,"args":[{"name":"out","type":"const git_tree_entry **","comment":"Pointer to store the entry (optional)"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry"},{"name":"id","type":"const git_oid *","comment":"SHA1 oid of the entry"},{"name":"filemode","type":"git_filemode_t","comment":"Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000."}],"argline":"const git_tree_entry **out, git_treebuilder *bld, const char *filename, const git_oid *id, git_filemode_t filemode","sig":"const git_tree_entry **::git_treebuilder *::const char *::const git_oid *::git_filemode_t","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Add or update an entry to the builder</p>\n","comments":"<p>Insert a new entry for <code>filename</code> in the builder with the given attributes.</p>\n\n<p>If an entry named <code>filename</code> already exists, its attributes will be updated with the given ones.</p>\n\n<p>The optional pointer <code>out</code> can be used to retrieve a pointer to the newly created/updated entry.  Pass NULL if you do not need it. The pointer may not be valid past the next operation in this builder. Duplicate the entry if you want to keep it.</p>\n\n<p>No attempt is being made to ensure that the provided oid points to an existing git object in the object database, nor that the attributes make sense regarding the type of the pointed at object.</p>\n","group":"treebuilder"},"git_treebuilder_remove":{"type":"function","file":"tree.h","line":336,"lineto":337,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filename","type":"const char *","comment":"Filename of the entry to remove"}],"argline":"git_treebuilder *bld, const char *filename","sig":"git_treebuilder *::const char *","return":{"type":"int","comment":null},"description":"<p>Remove an entry from the builder by its filename</p>\n","comments":"","group":"treebuilder"},"git_treebuilder_filter":{"type":"function","file":"tree.h","line":360,"lineto":363,"args":[{"name":"bld","type":"git_treebuilder *","comment":"Tree builder"},{"name":"filter","type":"git_treebuilder_filter_cb","comment":"Callback to filter entries"},{"name":"payload","type":"void *","comment":"Extra data to pass to filter callback"}],"argline":"git_treebuilder *bld, git_treebuilder_filter_cb filter, void *payload","sig":"git_treebuilder *::git_treebuilder_filter_cb::void *","return":{"type":"void","comment":null},"description":"<p>Selectively remove entries in the tree</p>\n","comments":"<p>The <code>filter</code> callback will be called for each entry in the tree with a pointer to the entry and the provided <code>payload</code>; if the callback returns non-zero, the entry will be filtered (removed from the builder).</p>\n","group":"treebuilder"},"git_treebuilder_write":{"type":"function","file":"tree.h","line":375,"lineto":376,"args":[{"name":"id","type":"git_oid *","comment":"Pointer to store the OID of the newly written tree"},{"name":"bld","type":"git_treebuilder *","comment":"Tree builder to write"}],"argline":"git_oid *id, git_treebuilder *bld","sig":"git_oid *::git_treebuilder *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Write the contents of the tree builder as a tree object</p>\n","comments":"<p>The tree builder will be written to the given <code>repo</code>, and its identifying SHA1 hash will be stored in the <code>id</code> pointer.</p>\n","group":"treebuilder"},"git_tree_walk":{"type":"function","file":"tree.h","line":406,"lineto":410,"args":[{"name":"tree","type":"const git_tree *","comment":"The tree to walk"},{"name":"mode","type":"git_treewalk_mode","comment":"Traversal mode (pre or post-order)"},{"name":"callback","type":"git_treewalk_cb","comment":"Function to call on each tree entry"},{"name":"payload","type":"void *","comment":"Opaque pointer to be passed on each callback"}],"argline":"const git_tree *tree, git_treewalk_mode mode, git_treewalk_cb callback, void *payload","sig":"const git_tree *::git_treewalk_mode::git_treewalk_cb::void *","return":{"type":"int","comment":" 0 or an error code"},"description":"<p>Traverse the entries in a tree and its subtrees in post or pre order.</p>\n","comments":"<p>The entries will be traversed in the specified order, children subtrees will be automatically loaded as required, and the <code>callback</code> will be called once per entry with the current (relative) root for the entry and the entry data itself.</p>\n\n<p>If the callback returns a positive value, the passed entry will be skipped on the traversal (in pre mode). A negative value stops the walk.</p>\n","group":"tree"},"git_tree_dup":{"type":"function","file":"tree.h","line":419,"lineto":419,"args":[{"name":"out","type":"git_tree **","comment":"Pointer to store the copy of the tree"},{"name":"source","type":"git_tree *","comment":"Original tree to copy"}],"argline":"git_tree **out, git_tree *source","sig":"git_tree **::git_tree *","return":{"type":"int","comment":null},"description":"<p>Create an in-memory copy of a tree. The copy must be explicitly\n free&#39;d or it will leak.</p>\n","comments":"","group":"tree"},"git_tree_create_updated":{"type":"function","file":"tree.h","line":465,"lineto":465,"args":[{"name":"out","type":"git_oid *","comment":"id of the new tree"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the tree, must be the\n same as for `baseline`"},{"name":"baseline","type":"git_tree *","comment":"the tree to base these changes on"},{"name":"nupdates","type":"size_t","comment":"the number of elements in the update list"},{"name":"updates","type":"const git_tree_update *","comment":"the list of updates to perform"}],"argline":"git_oid *out, git_repository *repo, git_tree *baseline, size_t nupdates, const git_tree_update *updates","sig":"git_oid *::git_repository *::git_tree *::size_t::const git_tree_update *","return":{"type":"int","comment":null},"description":"<p>Create a tree based on another one with the specified modifications</p>\n","comments":"<p>Given the <code>baseline</code> perform the changes described in the list of <code>updates</code> and create a new tree.</p>\n\n<p>This function is optimized for common file/directory addition, removal and replacement in trees. It is much more efficient than reading the tree into a <code>git_index</code> and modifying that, but in exchange it is not as flexible.</p>\n\n<p>Deleting and adding the same entry is undefined behaviour, changing a tree to a blob or viceversa is not supported.</p>\n","group":"tree"}},"callbacks":{"git_checkout_notify_cb":{"type":"callback","file":"checkout.h","line":223,"lineto":229,"args":[{"name":"why","type":"git_checkout_notify_t","comment":null},{"name":"path","type":"const char *","comment":null},{"name":"baseline","type":"const git_diff_file *","comment":null},{"name":"target","type":"const git_diff_file *","comment":null},{"name":"workdir","type":"const git_diff_file *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_checkout_notify_t why, const char *path, const git_diff_file *baseline, const git_diff_file *target, const git_diff_file *workdir, void *payload","sig":"git_checkout_notify_t::const char *::const git_diff_file *::const git_diff_file *::const git_diff_file *::void *","return":{"type":"int","comment":null},"description":"<p>Checkout notification callback function </p>\n","comments":""},"git_checkout_progress_cb":{"type":"callback","file":"checkout.h","line":232,"lineto":236,"args":[{"name":"path","type":"const char *","comment":null},{"name":"completed_steps","type":"size_t","comment":null},{"name":"total_steps","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, size_t completed_steps, size_t total_steps, void *payload","sig":"const char *::size_t::size_t::void *","return":{"type":"void","comment":null},"description":"<p>Checkout progress notification function </p>\n","comments":""},"git_checkout_perfdata_cb":{"type":"callback","file":"checkout.h","line":239,"lineto":241,"args":[{"name":"perfdata","type":"const git_checkout_perfdata *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_checkout_perfdata *perfdata, void *payload","sig":"const git_checkout_perfdata *::void *","return":{"type":"void","comment":null},"description":"<p>Checkout perfdata notification function </p>\n","comments":""},"git_remote_create_cb":{"type":"callback","file":"clone.h","line":69,"lineto":74,"args":[{"name":"out","type":"git_remote **","comment":"the resulting remote"},{"name":"repo","type":"git_repository *","comment":"the repository in which to create the remote"},{"name":"name","type":"const char *","comment":"the remote's name"},{"name":"url","type":"const char *","comment":"the remote's url"},{"name":"payload","type":"void *","comment":"an opaque payload"}],"argline":"git_remote **out, git_repository *repo, const char *name, const char *url, void *payload","sig":"git_remote **::git_repository *::const char *::const char *::void *","return":{"type":"int","comment":" 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code"},"description":"<p>The signature of a function matching git_remote_create, with an additional\n void* as a callback payload.</p>\n","comments":"<p>Callers of git_clone may provide a function matching this signature to override the remote creation and customization process during a clone operation.</p>\n"},"git_repository_create_cb":{"type":"callback","file":"clone.h","line":90,"lineto":94,"args":[{"name":"out","type":"git_repository **","comment":"the resulting repository"},{"name":"path","type":"const char *","comment":"path in which to create the repository"},{"name":"bare","type":"int","comment":"whether the repository is bare. This is the value from the clone options"},{"name":"payload","type":"void *","comment":"payload specified by the options"}],"argline":"git_repository **out, const char *path, int bare, void *payload","sig":"git_repository **::const char *::int::void *","return":{"type":"int","comment":" 0, or a negative value to indicate error"},"description":"<p>The signature of a function matchin git_repository_init, with an\n aditional void * as callback payload.</p>\n","comments":"<p>Callers of git_clone my provide a function matching this signature to override the repository creation and customization process during a clone operation.</p>\n"},"git_diff_notify_cb":{"type":"callback","file":"diff.h","line":353,"lineto":357,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":null},{"name":"delta_to_add","type":"const git_diff_delta *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const git_diff_delta *delta_to_add, const char *matched_pathspec, void *payload","sig":"const git_diff *::const git_diff_delta *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Diff notification callback function.</p>\n","comments":"<p>The callback will be called for each file, just before the <code>git_delta_t</code> gets inserted into the diff.</p>\n\n<p>When the callback: - returns &lt; 0, the diff process will be aborted. - returns &gt; 0, the delta will not be inserted into the diff, but the       diff process continues. - returns 0, the delta is inserted into the diff, and the diff process      continues.</p>\n"},"git_diff_progress_cb":{"type":"callback","file":"diff.h","line":369,"lineto":373,"args":[{"name":"diff_so_far","type":"const git_diff *","comment":"The diff being generated."},{"name":"old_path","type":"const char *","comment":"The path to the old file or NULL."},{"name":"new_path","type":"const char *","comment":"The path to the new file or NULL."},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff *diff_so_far, const char *old_path, const char *new_path, void *payload","sig":"const git_diff *::const char *::const char *::void *","return":{"type":"int","comment":" Non-zero to abort the diff."},"description":"<p>Diff progress callback.</p>\n","comments":"<p>Called before each file comparison.</p>\n"},"git_diff_file_cb":{"type":"callback","file":"diff.h","line":452,"lineto":455,"args":[{"name":"delta","type":"const git_diff_delta *","comment":"A pointer to the delta data for the file"},{"name":"progress","type":"float","comment":"Goes from 0 to 1 over the diff"},{"name":"payload","type":"void *","comment":"User-specified pointer from foreach function"}],"argline":"const git_diff_delta *delta, float progress, void *payload","sig":"const git_diff_delta *::float::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per file.</p>\n","comments":""},"git_diff_binary_cb":{"type":"callback","file":"diff.h","line":509,"lineto":512,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"binary","type":"const git_diff_binary *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_binary *binary, void *payload","sig":"const git_diff_delta *::const git_diff_binary *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made for\n binary content within the diff.</p>\n","comments":""},"git_diff_hunk_cb":{"type":"callback","file":"diff.h","line":529,"lineto":532,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per hunk.</p>\n","comments":""},"git_diff_line_cb":{"type":"callback","file":"diff.h","line":582,"lineto":586,"args":[{"name":"delta","type":"const git_diff_delta *","comment":null},{"name":"hunk","type":"const git_diff_hunk *","comment":null},{"name":"line","type":"const git_diff_line *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_diff_delta *delta, const git_diff_hunk *hunk, const git_diff_line *line, void *payload","sig":"const git_diff_delta *::const git_diff_hunk *::const git_diff_line *::void *","return":{"type":"int","comment":null},"description":"<p>When iterating over a diff, callback that will be made per text diff\n line. In this context, the provided range will be NULL.</p>\n","comments":"<p>When printing a diff, callback that will be made to output each line of text.  This uses some extra GIT_DIFF_LINE_... constants for output of lines of file and hunk headers.</p>\n"},"git_index_matched_path_cb":{"type":"callback","file":"index.h","line":146,"lineto":147,"args":[{"name":"path","type":"const char *","comment":null},{"name":"matched_pathspec","type":"const char *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, const char *matched_pathspec, void *payload","sig":"const char *::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for APIs that add/remove/update files matching pathspec </p>\n","comments":""},"git_headlist_cb":{"type":"callback","file":"net.h","line":55,"lineto":55,"args":[{"name":"rhead","type":"git_remote_head *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_remote_head *rhead, void *payload","sig":"git_remote_head *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for listing the remote heads</p>\n","comments":""},"git_note_foreach_cb":{"type":"callback","file":"notes.h","line":29,"lineto":30,"args":[{"name":"blob_id","type":"const git_oid *","comment":null},{"name":"annotated_object_id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *blob_id, const git_oid *annotated_object_id, void *payload","sig":"const git_oid *::const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_note_foreach.</p>\n","comments":"<p>Receives: - blob_id: Oid of the blob containing the message - annotated_object_id: Oid of the git object being annotated - payload: Payload data passed to <code>git_note_foreach</code></p>\n"},"git_odb_foreach_cb":{"type":"callback","file":"odb.h","line":27,"lineto":27,"args":[{"name":"id","type":"const git_oid *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_oid *id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>Function type for callbacks from git_odb_foreach.</p>\n","comments":""},"git_packbuilder_progress":{"type":"callback","file":"pack.h","line":210,"lineto":214,"args":[{"name":"stage","type":"int","comment":null},{"name":"current","type":"uint32_t","comment":null},{"name":"total","type":"uint32_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"int stage, uint32_t current, uint32_t total, void *payload","sig":"int::uint32_t::uint32_t::void *","return":{"type":"int","comment":null},"description":"<p>Packbuilder progress notification function </p>\n","comments":""},"git_push_transfer_progress":{"type":"callback","file":"remote.h","line":333,"lineto":337,"args":[{"name":"current","type":"unsigned int","comment":null},{"name":"total","type":"unsigned int","comment":null},{"name":"bytes","type":"size_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"unsigned int current, unsigned int total, size_t bytes, void *payload","sig":"unsigned int::unsigned int::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Push network progress notification function </p>\n","comments":""},"git_push_negotiation":{"type":"callback","file":"remote.h","line":368,"lineto":368,"args":[{"name":"updates","type":"const git_push_update **","comment":"an array containing the updates which will be sent\n as commands to the destination."},{"name":"len","type":"size_t","comment":"number of elements in `updates`"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const git_push_update **updates, size_t len, void *payload","sig":"const git_push_update **::size_t::void *","return":{"type":"int","comment":null},"description":"<p>Callback used to inform of upcoming updates.</p>\n","comments":""},"git_revwalk_hide_cb":{"type":"callback","file":"revwalk.h","line":277,"lineto":279,"args":[{"name":"commit_id","type":"const git_oid *","comment":"oid of Commit"},{"name":"payload","type":"void *","comment":"User-specified pointer to data to be passed as data payload"}],"argline":"const git_oid *commit_id, void *payload","sig":"const git_oid *::void *","return":{"type":"int","comment":null},"description":"<p>This is a callback function that user can provide to hide a\n commit and its parents. If the callback function returns non-zero value,\n then this commit and its parents will be hidden.</p>\n","comments":""},"git_stash_apply_progress_cb":{"type":"callback","file":"stash.h","line":113,"lineto":115,"args":[{"name":"progress","type":"git_stash_apply_progress_t","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_stash_apply_progress_t progress, void *payload","sig":"git_stash_apply_progress_t::void *","return":{"type":"int","comment":null},"description":"<p>Stash application progress notification function.\n Return 0 to continue processing, or a negative value to\n abort the stash application.</p>\n","comments":""},"git_stash_cb":{"type":"callback","file":"stash.h","line":198,"lineto":202,"args":[{"name":"index","type":"size_t","comment":"The position within the stash list. 0 points to the\n              most recent stashed state."},{"name":"message","type":"const char *","comment":"The stash message."},{"name":"stash_id","type":"const int *","comment":"The commit oid of the stashed state."},{"name":"payload","type":"void *","comment":"Extra parameter to callback function."}],"argline":"size_t index, const char *message, const int *stash_id, void *payload","sig":"size_t::const char *::const int *::void *","return":{"type":"int","comment":" 0 to continue iterating or non-zero to stop."},"description":"<p>This is a callback function you can provide to iterate over all the\n stashed states that will be invoked per entry.</p>\n","comments":""},"git_status_cb":{"type":"callback","file":"status.h","line":61,"lineto":62,"args":[{"name":"path","type":"const char *","comment":null},{"name":"status_flags","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *path, unsigned int status_flags, void *payload","sig":"const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Function pointer to receive status on individual files</p>\n","comments":"<p><code>path</code> is the relative path to the file from the root of the repository.</p>\n\n<p><code>status_flags</code> is a combination of <code>git_status_t</code> values that apply.</p>\n\n<p><code>payload</code> is the value you passed to the foreach function as payload.</p>\n"},"git_submodule_cb":{"type":"callback","file":"submodule.h","line":118,"lineto":119,"args":[{"name":"sm","type":"git_submodule *","comment":"git_submodule currently being visited"},{"name":"name","type":"const char *","comment":"name of the submodule"},{"name":"payload","type":"void *","comment":"value you passed to the foreach function as payload"}],"argline":"git_submodule *sm, const char *name, void *payload","sig":"git_submodule *::const char *::void *","return":{"type":"int","comment":" 0 on success or error code"},"description":"<p>Function pointer to receive each submodule</p>\n","comments":""},"git_filter_init_fn":{"type":"callback","file":"sys/filter.h","line":141,"lineto":141,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on filter</p>\n","comments":"<p>Specified as <code>filter.initialize</code>, this is an optional callback invoked before a filter is first used.  It will be called once at most.</p>\n\n<p>If non-NULL, the filter&#39;s <code>initialize</code> callback will be invoked right before the first use of the filter, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the filter).</p>\n"},"git_filter_shutdown_fn":{"type":"callback","file":"sys/filter.h","line":153,"lineto":153,"args":[{"name":"self","type":"git_filter *","comment":null}],"argline":"git_filter *self","sig":"git_filter *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on filter</p>\n","comments":"<p>Specified as <code>filter.shutdown</code>, this is an optional callback invoked when the filter is unregistered or when libgit2 is shutting down.  It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_filter</code> object itself.</p>\n"},"git_filter_check_fn":{"type":"callback","file":"sys/filter.h","line":175,"lineto":179,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"src","type":"const git_filter_source *","comment":null},{"name":"attr_values","type":"const char **","comment":null}],"argline":"git_filter *self, void **payload, const git_filter_source *src, const char **attr_values","sig":"git_filter *::void **::const git_filter_source *::const char **","return":{"type":"int","comment":null},"description":"<p>Callback to decide if a given source needs this filter</p>\n","comments":"<p>Specified as <code>filter.check</code>, this is an optional callback that checks if filtering is needed for a given source.</p>\n\n<p>It should return 0 if the filter should be applied (i.e. success), GIT_PASSTHROUGH if the filter should not be applied, or an error code to fail out of the filter processing pipeline and return to the caller.</p>\n\n<p>The <code>attr_values</code> will be set to the values of any attributes given in the filter definition.  See <code>git_filter</code> below for more detail.</p>\n\n<p>The <code>payload</code> will be a pointer to a reference payload for the filter. This will start as NULL, but <code>check</code> can assign to this pointer for later use by the <code>apply</code> callback.  Note that the value should be heap allocated (not stack), so that it doesn&#39;t go away before the <code>apply</code> callback can use it.  If a filter allocates and assigns a value to the <code>payload</code>, it will need a <code>cleanup</code> callback to free the payload.</p>\n"},"git_filter_apply_fn":{"type":"callback","file":"sys/filter.h","line":193,"lineto":198,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void **","comment":null},{"name":"to","type":"git_buf *","comment":null},{"name":"from","type":"const git_buf *","comment":null},{"name":"src","type":"const git_filter_source *","comment":null}],"argline":"git_filter *self, void **payload, git_buf *to, const git_buf *from, const git_filter_source *src","sig":"git_filter *::void **::git_buf *::const git_buf *::const git_filter_source *","return":{"type":"int","comment":null},"description":"<p>Callback to actually perform the data filtering</p>\n","comments":"<p>Specified as <code>filter.apply</code>, this is the callback that actually filters data.  If it successfully writes the output, it should return 0.  Like <code>check</code>, it can return GIT_PASSTHROUGH to indicate that the filter doesn&#39;t want to run.  Other error codes will stop filter processing and return to the caller.</p>\n\n<p>The <code>payload</code> value will refer to any payload that was set by the <code>check</code> callback.  It may be read from or written to as needed.</p>\n"},"git_filter_cleanup_fn":{"type":"callback","file":"sys/filter.h","line":215,"lineto":217,"args":[{"name":"self","type":"git_filter *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_filter *self, void *payload","sig":"git_filter *::void *","return":{"type":"void","comment":null},"description":"<p>Callback to clean up after filtering has been applied</p>\n","comments":"<p>Specified as <code>filter.cleanup</code>, this is an optional callback invoked after the filter has been applied.  If the <code>check</code> or <code>apply</code> callbacks allocated a <code>payload</code> to keep per-source filter state, use this callback to free that payload and release resources as required.</p>\n"},"git_merge_driver_init_fn":{"type":"callback","file":"sys/merge.h","line":71,"lineto":71,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"int","comment":null},"description":"<p>Initialize callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.initialize</code>, this is an optional callback invoked before a merge driver is first used.  It will be called once at most per library lifetime.</p>\n\n<p>If non-NULL, the merge driver&#39;s <code>initialize</code> callback will be invoked right before the first use of the driver, so you can defer expensive initialization operations (in case libgit2 is being used in a way that doesn&#39;t need the merge driver).</p>\n"},"git_merge_driver_shutdown_fn":{"type":"callback","file":"sys/merge.h","line":83,"lineto":83,"args":[{"name":"self","type":"int *","comment":null}],"argline":"int *self","sig":"int *","return":{"type":"void","comment":null},"description":"<p>Shutdown callback on merge driver</p>\n","comments":"<p>Specified as <code>driver.shutdown</code>, this is an optional callback invoked when the merge driver is unregistered or when libgit2 is shutting down. It will be called once at most and should release resources as needed. This may be called even if the <code>initialize</code> callback was not made.</p>\n\n<p>Typically this function will free the <code>git_merge_driver</code> object itself.</p>\n"},"git_merge_driver_apply_fn":{"type":"callback","file":"sys/merge.h","line":103,"lineto":109,"args":[{"name":"self","type":"int *","comment":null},{"name":"path_out","type":"const char **","comment":null},{"name":"mode_out","type":"int *","comment":null},{"name":"merged_out","type":"int *","comment":null},{"name":"filter_name","type":"const char *","comment":null},{"name":"src","type":"const git_merge_driver_source *","comment":null}],"argline":"int *self, const char **path_out, int *mode_out, int *merged_out, const char *filter_name, const git_merge_driver_source *src","sig":"int *::const char **::int *::int *::const char *::const git_merge_driver_source *","return":{"type":"int","comment":null},"description":"<p>Callback to perform the merge.</p>\n","comments":"<p>Specified as <code>driver.apply</code>, this is the callback that actually does the merge.  If it can successfully perform a merge, it should populate <code>path_out</code> with a pointer to the filename to accept, <code>mode_out</code> with the resultant mode, and <code>merged_out</code> with the buffer of the merged file and then return 0.  If the driver returns <code>GIT_PASSTHROUGH</code>, then the default merge driver should instead be run.  It can also return <code>GIT_EMERGECONFLICT</code> if the driver is not able to produce a merge result, and the file will remain conflicted.  Any other errors will fail and return to the caller.</p>\n\n<p>The <code>filter_name</code> contains the name of the filter that was invoked, as specified by the file&#39;s attributes.</p>\n\n<p>The <code>src</code> contains the data about the file to be merged.</p>\n"},"git_trace_callback":{"type":"callback","file":"trace.h","line":52,"lineto":52,"args":[{"name":"level","type":"git_trace_level_t","comment":null},{"name":"msg","type":"const char *","comment":null}],"argline":"git_trace_level_t level, const char *msg","sig":"git_trace_level_t::const char *","return":{"type":"void","comment":null},"description":"<p>An instance for a tracing function</p>\n","comments":""},"git_transport_cb":{"type":"callback","file":"transport.h","line":24,"lineto":24,"args":[{"name":"out","type":"git_transport **","comment":null},{"name":"owner","type":"git_remote *","comment":null},{"name":"param","type":"void *","comment":null}],"argline":"git_transport **out, git_remote *owner, void *param","sig":"git_transport **::git_remote *::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which creates a transport </p>\n","comments":""},"git_cred_acquire_cb":{"type":"callback","file":"transport.h","line":333,"lineto":338,"args":[{"name":"cred","type":"git_cred **","comment":null},{"name":"url","type":"const char *","comment":null},{"name":"username_from_url","type":"const char *","comment":null},{"name":"allowed_types","type":"unsigned int","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload","sig":"git_cred **::const char *::const char *::unsigned int::void *","return":{"type":"int","comment":null},"description":"<p>Signature of a function which acquires a credential object.</p>\n","comments":"<ul>\n<li>cred: The newly created credential object. - url: The resource for which we are demanding a credential. - username_from_url: The username that was embedded in a &quot;user@host&quot;                          remote url, or NULL if not included. - allowed_types: A bitmask stating which cred types are OK to return. - payload: The payload provided when specifying this callback. - returns 0 for success, &lt; 0 to indicate an error, &gt; 0 to indicate       no credential was acquired</li>\n</ul>\n"},"git_treebuilder_filter_cb":{"type":"callback","file":"tree.h","line":346,"lineto":347,"args":[{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const git_tree_entry *entry, void *payload","sig":"const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for git_treebuilder_filter</p>\n","comments":"<p>The return value is treated as a boolean, with zero indicating that the entry should be left alone and any non-zero value meaning that the entry should be removed from the treebuilder list (i.e. filtered out).</p>\n"},"git_treewalk_cb":{"type":"callback","file":"tree.h","line":380,"lineto":381,"args":[{"name":"root","type":"const char *","comment":null},{"name":"entry","type":"const git_tree_entry *","comment":null},{"name":"payload","type":"void *","comment":null}],"argline":"const char *root, const git_tree_entry *entry, void *payload","sig":"const char *::const git_tree_entry *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the tree traversal method </p>\n","comments":""},"git_transfer_progress_cb":{"type":"callback","file":"types.h","line":270,"lineto":270,"args":[{"name":"stats","type":"const git_transfer_progress *","comment":"Structure containing information about the state of the transfer"},{"name":"payload","type":"void *","comment":"Payload provided by caller"}],"argline":"const git_transfer_progress *stats, void *payload","sig":"const git_transfer_progress *::void *","return":{"type":"int","comment":null},"description":"<p>Type for progress callbacks during indexing.  Return a value less than zero\n to cancel the transfer.</p>\n","comments":""},"git_transport_message_cb":{"type":"callback","file":"types.h","line":280,"lineto":280,"args":[{"name":"str","type":"const char *","comment":"The message from the transport"},{"name":"len","type":"int","comment":"The length of the message"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"const char *str, int len, void *payload","sig":"const char *::int::void *","return":{"type":"int","comment":null},"description":"<p>Type for messages delivered by the transport.  Return a negative value\n to cancel the network operation.</p>\n","comments":""},"git_transport_certificate_check_cb":{"type":"callback","file":"types.h","line":330,"lineto":330,"args":[{"name":"cert","type":"git_cert *","comment":"The host certificate"},{"name":"valid","type":"int","comment":"Whether the libgit2 checks (OpenSSL or WinHTTP) think\n this certificate is valid"},{"name":"host","type":"const char *","comment":"Hostname of the host libgit2 connected to"},{"name":"payload","type":"void *","comment":"Payload provided by the caller"}],"argline":"git_cert *cert, int valid, const char *host, void *payload","sig":"git_cert *::int::const char *::void *","return":{"type":"int","comment":null},"description":"<p>Callback for the user&#39;s custom certificate checks.</p>\n","comments":""}},"globals":{},"types":[["git_annotated_commit",{"decl":"git_annotated_commit","type":"struct","value":"git_annotated_commit","file":"types.h","line":178,"lineto":178,"tdef":"typedef","description":" Annotated commits, the input to merge and rebase. ","comments":"","used":{"returns":[],"needs":["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup","git_branch_create_from_annotated","git_merge","git_merge_analysis","git_rebase_init","git_repository_set_head_detached_from_annotated","git_reset_from_annotated"]}}],["git_attr_t",{"decl":["GIT_ATTR_UNSPECIFIED_T","GIT_ATTR_TRUE_T","GIT_ATTR_FALSE_T","GIT_ATTR_VALUE_T"],"type":"enum","file":"attr.h","line":82,"lineto":87,"block":"GIT_ATTR_UNSPECIFIED_T\nGIT_ATTR_TRUE_T\nGIT_ATTR_FALSE_T\nGIT_ATTR_VALUE_T","tdef":"typedef","description":" Possible states for an attribute","comments":"","fields":[{"type":"int","name":"GIT_ATTR_UNSPECIFIED_T","comments":"<p>The attribute has been left unspecified </p>\n","value":0},{"type":"int","name":"GIT_ATTR_TRUE_T","comments":"<p>The attribute has been set </p>\n","value":1},{"type":"int","name":"GIT_ATTR_FALSE_T","comments":"<p>The attribute has been unset </p>\n","value":2},{"type":"int","name":"GIT_ATTR_VALUE_T","comments":"<p>This attribute has a value </p>\n","value":3}],"used":{"returns":["git_attr_value"],"needs":[]}}],["git_blame_flag_t",{"decl":["GIT_BLAME_NORMAL","GIT_BLAME_TRACK_COPIES_SAME_FILE","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","GIT_BLAME_FIRST_PARENT"],"type":"enum","file":"blame.h","line":26,"lineto":46,"block":"GIT_BLAME_NORMAL\nGIT_BLAME_TRACK_COPIES_SAME_FILE\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES\nGIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES\nGIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES\nGIT_BLAME_FIRST_PARENT","tdef":"typedef","description":" Flags for indicating option behavior for git_blame APIs.","comments":"","fields":[{"type":"int","name":"GIT_BLAME_NORMAL","comments":"<p>Normal blame, the default </p>\n","value":0},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_FILE","comments":"<p>Track lines that have moved within a file (like <code>git blame -M</code>).\n NOT IMPLEMENTED. </p>\n","value":1},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES","comments":"<p>Track lines that have moved across files in the same commit (like <code>git blame -C</code>).\n NOT IMPLEMENTED. </p>\n","value":2},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in the\n same commit (like <code>git blame -CC</code>). Implies SAME_FILE.\n NOT IMPLEMENTED. </p>\n","value":4},{"type":"int","name":"GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES","comments":"<p>Track lines that have been copied from another file that exists in <em>any</em>\n commit (like <code>git blame -CCC</code>). Implies SAME_COMMIT_COPIES.\n NOT IMPLEMENTED. </p>\n","value":8},{"type":"int","name":"GIT_BLAME_FIRST_PARENT","comments":"<p>Restrict the search of commits to those reachable following only the\n first parents. </p>\n","value":16}],"used":{"returns":[],"needs":[]}}],["git_blame_hunk",{"decl":["size_t lines_in_hunk","git_oid final_commit_id","size_t final_start_line_number","git_signature * final_signature","git_oid orig_commit_id","const char * orig_path","size_t orig_start_line_number","git_signature * orig_signature","char boundary"],"type":"struct","value":"git_blame_hunk","file":"blame.h","line":115,"lineto":128,"block":"size_t lines_in_hunk\ngit_oid final_commit_id\nsize_t final_start_line_number\ngit_signature * final_signature\ngit_oid orig_commit_id\nconst char * orig_path\nsize_t orig_start_line_number\ngit_signature * orig_signature\nchar boundary","tdef":"typedef","description":" Structure that represents a blame hunk.","comments":"<ul>\n<li><code>lines_in_hunk</code> is the number of lines in this hunk - <code>final_commit_id</code> is the OID of the commit where this line was last   changed. - <code>final_start_line_number</code> is the 1-based line number where this hunk   begins, in the final version of the file - <code>orig_commit_id</code> is the OID of the commit where this hunk was found.  This   will usually be the same as <code>final_commit_id</code>, except when   <code>GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES</code> has been specified. - <code>orig_path</code> is the path to the file where this hunk originated, as of the   commit specified by <code>orig_commit_id</code>. - <code>orig_start_line_number</code> is the 1-based line number where this hunk begins   in the file named by <code>orig_path</code> in the commit specified by   <code>orig_commit_id</code>. - <code>boundary</code> is 1 iff the hunk has been tracked to a boundary commit (the   root, or the commit specified in git_blame_options.oldest_commit)</li>\n</ul>\n","fields":[{"type":"size_t","name":"lines_in_hunk","comments":""},{"type":"git_oid","name":"final_commit_id","comments":""},{"type":"size_t","name":"final_start_line_number","comments":""},{"type":"git_signature *","name":"final_signature","comments":""},{"type":"git_oid","name":"orig_commit_id","comments":""},{"type":"const char *","name":"orig_path","comments":""},{"type":"size_t","name":"orig_start_line_number","comments":""},{"type":"git_signature *","name":"orig_signature","comments":""},{"type":"char","name":"boundary","comments":""}],"used":{"returns":["git_blame_get_hunk_byindex","git_blame_get_hunk_byline"],"needs":[]}}],["git_blame_options",{"decl":["unsigned int version","uint32_t flags","uint16_t min_match_characters","git_oid newest_commit","git_oid oldest_commit","size_t min_line","size_t max_line"],"type":"struct","value":"git_blame_options","file":"blame.h","line":70,"lineto":79,"block":"unsigned int version\nuint32_t flags\nuint16_t min_match_characters\ngit_oid newest_commit\ngit_oid oldest_commit\nsize_t min_line\nsize_t max_line","tdef":"typedef","description":" Blame options structure","comments":"<p>Use zeros to indicate default settings.  It&#39;s easiest to use the <code>GIT_BLAME_OPTIONS_INIT</code> macro:     git_blame_options opts = GIT_BLAME_OPTIONS_INIT;</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_blame_flag_t</code> values above. - <code>min_match_characters</code> is the lower bound on the number of alphanumeric   characters that must be detected as moving/copying within a file for it to   associate those lines with the parent commit. The default value is 20.   This value only takes effect if any of the <code>GIT_BLAME_TRACK_COPIES_*</code>   flags are specified. - <code>newest_commit</code> is the id of the newest commit to consider.  The default                   is HEAD. - <code>oldest_commit</code> is the id of the oldest commit to consider.  The default                   is the first commit encountered with a NULL parent.   - <code>min_line</code> is the first line in the file to blame.  The default is 1 (line                 numbers start with 1). - <code>max_line</code> is the last line in the file to blame.  The default is the last                 line of the file.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"min_match_characters","comments":""},{"type":"git_oid","name":"newest_commit","comments":""},{"type":"git_oid","name":"oldest_commit","comments":""},{"type":"size_t","name":"min_line","comments":""},{"type":"size_t","name":"max_line","comments":""}],"used":{"returns":[],"needs":["git_blame_file","git_blame_init_options"]}}],["git_blob",{"decl":"git_blob","type":"struct","value":"git_blob","file":"types.h","line":117,"lineto":117,"tdef":"typedef","description":" In-memory representation of a blob object. ","comments":"","used":{"returns":[],"needs":["git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize","git_diff_blob_to_buffer","git_diff_blobs","git_filter_list_apply_to_blob","git_filter_list_load","git_filter_list_stream_blob","git_patch_from_blob_and_buffer","git_patch_from_blobs"]}}],["git_branch_iterator",{"decl":"git_branch_iterator","type":"struct","value":"git_branch_iterator","file":"branch.h","line":88,"lineto":88,"tdef":"typedef","description":" Iterator type for branches ","comments":"","used":{"returns":[],"needs":["git_branch_iterator_free","git_branch_iterator_new","git_branch_next"]}}],["git_branch_t",{"decl":["GIT_BRANCH_LOCAL","GIT_BRANCH_REMOTE","GIT_BRANCH_ALL"],"type":"enum","file":"types.h","line":198,"lineto":202,"block":"GIT_BRANCH_LOCAL\nGIT_BRANCH_REMOTE\nGIT_BRANCH_ALL","tdef":"typedef","description":" Basic type of any Git branch. ","comments":"","fields":[{"type":"int","name":"GIT_BRANCH_LOCAL","comments":"","value":1},{"type":"int","name":"GIT_BRANCH_REMOTE","comments":"","value":2},{"type":"int","name":"GIT_BRANCH_ALL","comments":"","value":3}],"used":{"returns":[],"needs":["git_branch_iterator_new","git_branch_lookup","git_branch_next"]}}],["git_buf",{"decl":["char * ptr","size_t asize","size_t size"],"type":"struct","value":"git_buf","file":"buffer.h","line":52,"lineto":55,"block":"char * ptr\nsize_t asize\nsize_t size","tdef":"typedef","description":" A data buffer for exporting data from libgit2","comments":"<p>Sometimes libgit2 wants to return an allocated data buffer to the caller and have the caller take responsibility for freeing that memory. This can be awkward if the caller does not have easy access to the same allocation functions that libgit2 is using.  In those cases, libgit2 will fill in a <code>git_buf</code> and the caller can use <code>git_buf_free()</code> to release it when they are done.</p>\n\n<p>A <code>git_buf</code> may also be used for the caller to pass in a reference to a block of memory they hold.  In this case, libgit2 will not resize or free the memory, but will read from it as needed.</p>\n\n<p>A <code>git_buf</code> is a public structure with three fields:</p>\n\n<ul>\n<li><p><code>ptr</code> points to the start of the allocated memory.  If it is NULL,   then the <code>git_buf</code> is considered empty and libgit2 will feel free   to overwrite it with new data.</p></li>\n<li><p><code>size</code> holds the size (in bytes) of the data that is actually used.</p></li>\n<li><p><code>asize</code> holds the known total amount of allocated memory if the <code>ptr</code>    was allocated by libgit2.  It may be larger than <code>size</code>.  If <code>ptr</code>    was not allocated by libgit2 and should not be resized and/or freed,    then <code>asize</code> will be set to zero.</p></li>\n</ul>\n\n<p>Some APIs may occasionally do something slightly unusual with a buffer, such as setting <code>ptr</code> to a value that was passed in by the user.  In those cases, the behavior will be clearly documented by the API.</p>\n","fields":[{"type":"char *","name":"ptr","comments":""},{"type":"size_t","name":"asize","comments":""},{"type":"size_t","name":"size","comments":""}],"used":{"returns":[],"needs":["git_blob_filtered_content","git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set","git_commit_create_buffer","git_commit_extract_signature","git_commit_header_field","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_get_path","git_config_get_string_buf","git_config_parse_path","git_describe_format","git_diff_commit_as_email","git_diff_format_email","git_diff_stats_to_buf","git_diff_to_buf","git_filter_apply_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_stream_data","git_message_prettify","git_object_short_id","git_patch_to_buf","git_refspec_rtransform","git_refspec_transform","git_remote_default_branch","git_repository_discover","git_repository_message","git_submodule_resolve_url"]}}],["git_cert",{"decl":["git_cert_t cert_type"],"type":"struct","value":"git_cert","file":"types.h","line":314,"lineto":319,"block":"git_cert_t cert_type","tdef":"typedef","description":" Parent type for `git_cert_hostkey` and `git_cert_x509`.","comments":"","fields":[{"type":"git_cert_t","name":"cert_type","comments":" Type of certificate. A `GIT_CERT_` value."}],"used":{"returns":[],"needs":["git_transport_certificate_check_cb","git_transport_smart_certificate_check"]}}],["git_cert_hostkey",{"decl":["git_cert parent","git_cert_ssh_t type","unsigned char [16] hash_md5","unsigned char [20] hash_sha1"],"type":"struct","value":"git_cert_hostkey","file":"transport.h","line":39,"lineto":59,"block":"git_cert parent\ngit_cert_ssh_t type\nunsigned char [16] hash_md5\nunsigned char [20] hash_sha1","tdef":"typedef","description":" Hostkey information taken from libssh2","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"git_cert_ssh_t","name":"type","comments":" A hostkey type from libssh2, either\n `GIT_CERT_SSH_MD5` or `GIT_CERT_SSH_SHA1`"},{"type":"unsigned char [16]","name":"hash_md5","comments":" Hostkey hash. If type has `GIT_CERT_SSH_MD5` set, this will\n have the MD5 hash of the hostkey."},{"type":"unsigned char [20]","name":"hash_sha1","comments":" Hostkey hash. If type has `GIT_CERT_SSH_SHA1` set, this will\n have the SHA-1 hash of the hostkey."}],"used":{"returns":[],"needs":[]}}],["git_cert_ssh_t",{"decl":["GIT_CERT_SSH_MD5","GIT_CERT_SSH_SHA1"],"type":"enum","file":"transport.h","line":29,"lineto":34,"block":"GIT_CERT_SSH_MD5\nGIT_CERT_SSH_SHA1","tdef":"typedef","description":" Type of SSH host fingerprint","comments":"","fields":[{"type":"int","name":"GIT_CERT_SSH_MD5","comments":"<p>MD5 is available </p>\n","value":1},{"type":"int","name":"GIT_CERT_SSH_SHA1","comments":"<p>SHA-1 is available </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_cert_t",{"decl":["GIT_CERT_NONE","GIT_CERT_X509","GIT_CERT_HOSTKEY_LIBSSH2","GIT_CERT_STRARRAY"],"type":"enum","file":"types.h","line":286,"lineto":309,"block":"GIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY\nGIT_CERT_NONE\nGIT_CERT_X509\nGIT_CERT_HOSTKEY_LIBSSH2\nGIT_CERT_STRARRAY","tdef":"typedef","description":" Type of host certificate structure that is passed to the check callback","comments":"","fields":[{"type":"int","name":"GIT_CERT_NONE","comments":"<p>No information about the certificate is available. This may\n happen when using curl.</p>\n","value":0},{"type":"int","name":"GIT_CERT_X509","comments":"<p>The <code>data</code> argument to the callback will be a pointer to\n the DER-encoded data.</p>\n","value":1},{"type":"int","name":"GIT_CERT_HOSTKEY_LIBSSH2","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_cert_hostkey</code> structure.</p>\n","value":2},{"type":"int","name":"GIT_CERT_STRARRAY","comments":"<p>The <code>data</code> argument to the callback will be a pointer to a\n <code>git_strarray</code> with <code>name:content</code> strings containing\n information about the certificate. This is used when using\n curl.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_cert_x509",{"decl":["git_cert parent","void * data","size_t len"],"type":"struct","value":"git_cert_x509","file":"transport.h","line":64,"lineto":74,"block":"git_cert parent\nvoid * data\nsize_t len","tdef":"typedef","description":" X.509 certificate information","comments":"","fields":[{"type":"git_cert","name":"parent","comments":""},{"type":"void *","name":"data","comments":" Pointer to the X.509 certificate data"},{"type":"size_t","name":"len","comments":" Length of the memory block pointed to by `data`."}],"used":{"returns":[],"needs":[]}}],["git_checkout_notify_t",{"decl":["GIT_CHECKOUT_NOTIFY_NONE","GIT_CHECKOUT_NOTIFY_CONFLICT","GIT_CHECKOUT_NOTIFY_DIRTY","GIT_CHECKOUT_NOTIFY_UPDATED","GIT_CHECKOUT_NOTIFY_UNTRACKED","GIT_CHECKOUT_NOTIFY_IGNORED","GIT_CHECKOUT_NOTIFY_ALL"],"type":"enum","file":"checkout.h","line":205,"lineto":214,"block":"GIT_CHECKOUT_NOTIFY_NONE\nGIT_CHECKOUT_NOTIFY_CONFLICT\nGIT_CHECKOUT_NOTIFY_DIRTY\nGIT_CHECKOUT_NOTIFY_UPDATED\nGIT_CHECKOUT_NOTIFY_UNTRACKED\nGIT_CHECKOUT_NOTIFY_IGNORED\nGIT_CHECKOUT_NOTIFY_ALL","tdef":"typedef","description":" Checkout notification flags","comments":"<p>Checkout will invoke an options notification callback (<code>notify_cb</code>) for certain cases - you pick which ones via <code>notify_flags</code>:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_NOTIFY_CONFLICT invokes checkout on conflicting paths.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_DIRTY notifies about &quot;dirty&quot; files, i.e. those that   do not need an update but no longer match the baseline.  Core git   displays these files when checkout runs, but won&#39;t stop the checkout.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UPDATED sends notification for any file changed.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_UNTRACKED notifies about untracked files.</p></li>\n<li><p>GIT_CHECKOUT_NOTIFY_IGNORED notifies about ignored files.</p></li>\n</ul>\n\n<p>Returning a non-zero value from this callback will cancel the checkout. The non-zero return value will be propagated back and returned by the git_checkout_... call.</p>\n\n<p>Notification callbacks are made prior to modifying any files on disk, so canceling on any notification will still happen prior to any files being modified.</p>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NOTIFY_NONE","comments":"","value":0},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_CONFLICT","comments":"","value":1},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_DIRTY","comments":"","value":2},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UPDATED","comments":"","value":4},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_UNTRACKED","comments":"","value":8},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_IGNORED","comments":"","value":16},{"type":"int","name":"GIT_CHECKOUT_NOTIFY_ALL","comments":"","value":65535}],"used":{"returns":[],"needs":["git_checkout_notify_cb"]}}],["git_checkout_options",{"decl":["unsigned int version","unsigned int checkout_strategy","int disable_filters","unsigned int dir_mode","unsigned int file_mode","int file_open_flags","unsigned int notify_flags","git_checkout_notify_cb notify_cb","void * notify_payload","git_checkout_progress_cb progress_cb","void * progress_payload","git_strarray paths","git_tree * baseline","git_index * baseline_index","const char * target_directory","const char * ancestor_label","const char * our_label","const char * their_label","git_checkout_perfdata_cb perfdata_cb","void * perfdata_payload"],"type":"struct","value":"git_checkout_options","file":"checkout.h","line":251,"lineto":295,"block":"unsigned int version\nunsigned int checkout_strategy\nint disable_filters\nunsigned int dir_mode\nunsigned int file_mode\nint file_open_flags\nunsigned int notify_flags\ngit_checkout_notify_cb notify_cb\nvoid * notify_payload\ngit_checkout_progress_cb progress_cb\nvoid * progress_payload\ngit_strarray paths\ngit_tree * baseline\ngit_index * baseline_index\nconst char * target_directory\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_checkout_perfdata_cb perfdata_cb\nvoid * perfdata_payload","tdef":"typedef","description":" Checkout options structure","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_CHECKOUT_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"checkout_strategy","comments":" default will be a dry run "},{"type":"int","name":"disable_filters","comments":" don't apply filters like CRLF conversion "},{"type":"unsigned int","name":"dir_mode","comments":" default is 0755 "},{"type":"unsigned int","name":"file_mode","comments":" default is 0644 or 0755 as dictated by blob "},{"type":"int","name":"file_open_flags","comments":" default is O_CREAT | O_TRUNC | O_WRONLY "},{"type":"unsigned int","name":"notify_flags","comments":" see `git_checkout_notify_t` above "},{"type":"git_checkout_notify_cb","name":"notify_cb","comments":""},{"type":"void *","name":"notify_payload","comments":""},{"type":"git_checkout_progress_cb","name":"progress_cb","comments":" Optional callback to notify the consumer of checkout progress. "},{"type":"void *","name":"progress_payload","comments":""},{"type":"git_strarray","name":"paths","comments":" When not zeroed out, array of fnmatch patterns specifying which\n  paths should be taken into account, otherwise all files.  Use\n  GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH to treat as simple list."},{"type":"git_tree *","name":"baseline","comments":" The expected content of the working directory; defaults to HEAD.\n  If the working directory does not match this baseline information,\n  that will produce a checkout conflict."},{"type":"git_index *","name":"baseline_index","comments":" expected content of workdir, expressed as an index. "},{"type":"const char *","name":"target_directory","comments":" alternative checkout path to workdir "},{"type":"const char *","name":"ancestor_label","comments":" the name of the common ancestor side of conflicts "},{"type":"const char *","name":"our_label","comments":" the name of the \"our\" side of conflicts "},{"type":"const char *","name":"their_label","comments":" the name of the \"their\" side of conflicts "},{"type":"git_checkout_perfdata_cb","name":"perfdata_cb","comments":" Optional callback to notify the consumer of performance data. "},{"type":"void *","name":"perfdata_payload","comments":""}],"used":{"returns":[],"needs":["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree","git_merge","git_reset","git_reset_from_annotated"]}}],["git_checkout_strategy_t",{"decl":["GIT_CHECKOUT_NONE","GIT_CHECKOUT_SAFE","GIT_CHECKOUT_FORCE","GIT_CHECKOUT_RECREATE_MISSING","GIT_CHECKOUT_ALLOW_CONFLICTS","GIT_CHECKOUT_REMOVE_UNTRACKED","GIT_CHECKOUT_REMOVE_IGNORED","GIT_CHECKOUT_UPDATE_ONLY","GIT_CHECKOUT_DONT_UPDATE_INDEX","GIT_CHECKOUT_NO_REFRESH","GIT_CHECKOUT_SKIP_UNMERGED","GIT_CHECKOUT_USE_OURS","GIT_CHECKOUT_USE_THEIRS","GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","GIT_CHECKOUT_CONFLICT_STYLE_MERGE","GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","GIT_CHECKOUT_DONT_REMOVE_EXISTING","GIT_CHECKOUT_DONT_WRITE_INDEX","GIT_CHECKOUT_UPDATE_SUBMODULES","GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED"],"type":"enum","file":"checkout.h","line":106,"lineto":177,"block":"GIT_CHECKOUT_NONE\nGIT_CHECKOUT_SAFE\nGIT_CHECKOUT_FORCE\nGIT_CHECKOUT_RECREATE_MISSING\nGIT_CHECKOUT_ALLOW_CONFLICTS\nGIT_CHECKOUT_REMOVE_UNTRACKED\nGIT_CHECKOUT_REMOVE_IGNORED\nGIT_CHECKOUT_UPDATE_ONLY\nGIT_CHECKOUT_DONT_UPDATE_INDEX\nGIT_CHECKOUT_NO_REFRESH\nGIT_CHECKOUT_SKIP_UNMERGED\nGIT_CHECKOUT_USE_OURS\nGIT_CHECKOUT_USE_THEIRS\nGIT_CHECKOUT_DISABLE_PATHSPEC_MATCH\nGIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES\nGIT_CHECKOUT_DONT_OVERWRITE_IGNORED\nGIT_CHECKOUT_CONFLICT_STYLE_MERGE\nGIT_CHECKOUT_CONFLICT_STYLE_DIFF3\nGIT_CHECKOUT_DONT_REMOVE_EXISTING\nGIT_CHECKOUT_DONT_WRITE_INDEX\nGIT_CHECKOUT_UPDATE_SUBMODULES\nGIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","tdef":"typedef","description":" Checkout behavior flags","comments":"<p>In libgit2, checkout is used to update the working directory and index to match a target tree.  Unlike git checkout, it does not move the HEAD commit for you - use <code>git_repository_set_head</code> or the like to do that.</p>\n\n<p>Checkout looks at (up to) four things: the &quot;target&quot; tree you want to check out, the &quot;baseline&quot; tree of what was checked out previously, the working directory for actual files, and the index for staged changes.</p>\n\n<p>You give checkout one of three strategies for update:</p>\n\n<ul>\n<li><p><code>GIT_CHECKOUT_NONE</code> is a dry-run strategy that checks for conflicts,   etc., but doesn&#39;t make any actual changes.</p></li>\n<li><p><code>GIT_CHECKOUT_FORCE</code> is at the opposite extreme, taking any action to   make the working directory match the target (including potentially   discarding modified files).</p></li>\n<li><p><code>GIT_CHECKOUT_SAFE</code> is between these two options, it will only make   modifications that will not lose changes.</p>\n\n<pre><code>                 |  target == baseline   |  target != baseline  |    ---------------------|-----------------------|----------------------|     workdir == baseline |       no action       |  create, update, or  |                         |                       |     delete file      |    ---------------------|-----------------------|----------------------|     workdir exists and  |       no action       |   conflict (notify   |       is != baseline    | notify dirty MODIFIED | and cancel checkout) |    ---------------------|-----------------------|----------------------|      workdir missing,   | notify dirty DELETED  |     create file      |      baseline present   |                       |                      |    ---------------------|-----------------------|----------------------|\n</code></pre></li>\n</ul>\n\n<p>To emulate <code>git checkout</code>, use <code>GIT_CHECKOUT_SAFE</code> with a checkout notification callback (see below) that displays information about dirty files.  The default behavior will cancel checkout on conflicts.</p>\n\n<p>To emulate <code>git checkout-index</code>, use <code>GIT_CHECKOUT_SAFE</code> with a notification callback that cancels the operation if a dirty-but-existing file is found in the working directory.  This core git command isn&#39;t quite &quot;force&quot; but is sensitive about some types of changes.</p>\n\n<p>To emulate <code>git checkout -f</code>, use <code>GIT_CHECKOUT_FORCE</code>.</p>\n\n<p>There are some additional flags to modified the behavior of checkout:</p>\n\n<ul>\n<li><p>GIT_CHECKOUT_ALLOW_CONFLICTS makes SAFE mode apply safe file updates   even if there are conflicts (instead of cancelling the checkout).</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_UNTRACKED means remove untracked files (i.e. not   in target, baseline, or index, and not ignored) from the working dir.</p></li>\n<li><p>GIT_CHECKOUT_REMOVE_IGNORED means remove ignored files (that are also   untracked) from the working directory as well.</p></li>\n<li><p>GIT_CHECKOUT_UPDATE_ONLY means to only update the content of files that   already exist.  Files will not be created nor deleted.  This just skips   applying adds, deletes, and typechanges.</p></li>\n<li><p>GIT_CHECKOUT_DONT_UPDATE_INDEX prevents checkout from writing the   updated files&#39; information to the index.</p></li>\n<li><p>Normally, checkout will reload the index and git attributes from disk   before any operations.  GIT_CHECKOUT_NO_REFRESH prevents this reload.</p></li>\n<li><p>Unmerged index entries are conflicts.  GIT_CHECKOUT_SKIP_UNMERGED skips   files with unmerged index entries instead.  GIT_CHECKOUT_USE_OURS and   GIT_CHECKOUT_USE_THEIRS to proceed with the checkout using either the   stage 2 (&quot;ours&quot;) or stage 3 (&quot;theirs&quot;) version of files in the index.</p></li>\n<li><p>GIT_CHECKOUT_DONT_OVERWRITE_IGNORED prevents ignored files from being   overwritten.  Normally, files that are ignored in the working directory   are not considered &quot;precious&quot; and may be overwritten if the checkout   target contains that file.</p></li>\n<li><p>GIT_CHECKOUT_DONT_REMOVE_EXISTING prevents checkout from removing   files or folders that fold to the same name on case insensitive   filesystems.  This can cause files to retain their existing names   and write through existing symbolic links.</p></li>\n</ul>\n","fields":[{"type":"int","name":"GIT_CHECKOUT_NONE","comments":"<p>default is a dry run, no actual updates </p>\n","value":0},{"type":"int","name":"GIT_CHECKOUT_SAFE","comments":"<p>Allow safe updates that cannot overwrite uncommitted data </p>\n","value":1},{"type":"int","name":"GIT_CHECKOUT_FORCE","comments":"<p>Allow all updates to force working directory to look like index </p>\n","value":2},{"type":"int","name":"GIT_CHECKOUT_RECREATE_MISSING","comments":"<p>Allow checkout to recreate missing files </p>\n","value":4},{"type":"int","name":"GIT_CHECKOUT_ALLOW_CONFLICTS","comments":"<p>Allow checkout to make safe updates even if conflicts are found </p>\n","value":16},{"type":"int","name":"GIT_CHECKOUT_REMOVE_UNTRACKED","comments":"<p>Remove untracked files not in index (that are not ignored) </p>\n","value":32},{"type":"int","name":"GIT_CHECKOUT_REMOVE_IGNORED","comments":"<p>Remove ignored files not in index </p>\n","value":64},{"type":"int","name":"GIT_CHECKOUT_UPDATE_ONLY","comments":"<p>Only update existing files, don&#39;t create new ones </p>\n","value":128},{"type":"int","name":"GIT_CHECKOUT_DONT_UPDATE_INDEX","comments":"<p>Normally checkout updates index entries as it goes; this stops that.\n Implies <code>GIT_CHECKOUT_DONT_WRITE_INDEX</code>.</p>\n","value":256},{"type":"int","name":"GIT_CHECKOUT_NO_REFRESH","comments":"<p>Don&#39;t refresh index/config/etc before doing checkout </p>\n","value":512},{"type":"int","name":"GIT_CHECKOUT_SKIP_UNMERGED","comments":"<p>Allow checkout to skip unmerged files </p>\n","value":1024},{"type":"int","name":"GIT_CHECKOUT_USE_OURS","comments":"<p>For unmerged files, checkout stage 2 from index </p>\n","value":2048},{"type":"int","name":"GIT_CHECKOUT_USE_THEIRS","comments":"<p>For unmerged files, checkout stage 3 from index </p>\n","value":4096},{"type":"int","name":"GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH","comments":"<p>Treat pathspec as simple list of exact match file paths </p>\n","value":8192},{"type":"int","name":"GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES","comments":"<p>Ignore directories in use, they will be left empty </p>\n","value":262144},{"type":"int","name":"GIT_CHECKOUT_DONT_OVERWRITE_IGNORED","comments":"<p>Don&#39;t overwrite ignored files that exist in the checkout target </p>\n","value":524288},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_MERGE","comments":"<p>Write normal merge files for conflicts </p>\n","value":1048576},{"type":"int","name":"GIT_CHECKOUT_CONFLICT_STYLE_DIFF3","comments":"<p>Include common ancestor data in diff3 format files for conflicts </p>\n","value":2097152},{"type":"int","name":"GIT_CHECKOUT_DONT_REMOVE_EXISTING","comments":"<p>Don&#39;t overwrite existing files or folders </p>\n","value":4194304},{"type":"int","name":"GIT_CHECKOUT_DONT_WRITE_INDEX","comments":"<p>Normally checkout writes the index upon completion; this prevents that. </p>\n","value":8388608},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES","comments":"<p>Recursively checkout submodules with same options (NOT IMPLEMENTED) </p>\n","value":65536},{"type":"int","name":"GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED","comments":"<p>Recursively checkout submodules if HEAD moved in super repo (NOT IMPLEMENTED) </p>\n","value":131072}],"used":{"returns":[],"needs":[]}}],["git_cherrypick_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_cherrypick_options","file":"cherrypick.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Cherry-pick options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_cherrypick","git_cherrypick_init_options"]}}],["git_clone_local_t",{"decl":["GIT_CLONE_LOCAL_AUTO","GIT_CLONE_LOCAL","GIT_CLONE_NO_LOCAL","GIT_CLONE_LOCAL_NO_LINKS"],"type":"enum","file":"clone.h","line":33,"lineto":53,"block":"GIT_CLONE_LOCAL_AUTO\nGIT_CLONE_LOCAL\nGIT_CLONE_NO_LOCAL\nGIT_CLONE_LOCAL_NO_LINKS","tdef":"typedef","description":" Options for bypassing the git-aware transport on clone. Bypassing\n it means that instead of a fetch, libgit2 will copy the object\n database directory instead of figuring out what it needs, which is\n faster. If possible, it will hardlink the files to save space.","comments":"","fields":[{"type":"int","name":"GIT_CLONE_LOCAL_AUTO","comments":"<p>Auto-detect (default), libgit2 will bypass the git-aware\n transport for local paths, but use a normal fetch for\n <code>file://</code> urls.</p>\n","value":0},{"type":"int","name":"GIT_CLONE_LOCAL","comments":"<p>Bypass the git-aware transport even for a <code>file://</code> url.</p>\n","value":1},{"type":"int","name":"GIT_CLONE_NO_LOCAL","comments":"<p>Do no bypass the git-aware transport</p>\n","value":2},{"type":"int","name":"GIT_CLONE_LOCAL_NO_LINKS","comments":"<p>Bypass the git-aware transport, but do not try to use\n hardlinks.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_clone_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","int bare","git_clone_local_t local","const char * checkout_branch","git_repository_create_cb repository_cb","void * repository_cb_payload","git_remote_create_cb remote_cb","void * remote_cb_payload"],"type":"struct","value":"git_clone_options","file":"clone.h","line":103,"lineto":164,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nint bare\ngit_clone_local_t local\nconst char * checkout_branch\ngit_repository_create_cb repository_cb\nvoid * repository_cb_payload\ngit_remote_create_cb remote_cb\nvoid * remote_cb_payload","tdef":"typedef","description":" Clone options structure","comments":"<p>Use the GIT_CLONE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<pre><code>    git_clone_options opts = GIT_CLONE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks are used for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"int","name":"bare","comments":" Set to zero (false) to create a standard repo, or non-zero\n for a bare repo"},{"type":"git_clone_local_t","name":"local","comments":" Whether to use a fetch or copy the object database."},{"type":"const char *","name":"checkout_branch","comments":" The name of the branch to checkout. NULL means use the\n remote's default branch."},{"type":"git_repository_create_cb","name":"repository_cb","comments":" A callback used to create the new repository into which to\n clone. If NULL, the 'bare' field will be used to determine\n whether to create a bare repository."},{"type":"void *","name":"repository_cb_payload","comments":" An opaque payload to pass to the git_repository creation callback.\n This parameter is ignored unless repository_cb is non-NULL."},{"type":"git_remote_create_cb","name":"remote_cb","comments":" A callback used to create the git_remote, prior to its being\n used to perform the clone operation. See the documentation for\n git_remote_create_cb for details. This parameter may be NULL,\n indicating that git_clone should provide default behavior."},{"type":"void *","name":"remote_cb_payload","comments":" An opaque payload to pass to the git_remote creation callback.\n This parameter is ignored unless remote_cb is non-NULL."}],"used":{"returns":[],"needs":["git_clone","git_clone_init_options"]}}],["git_commit",{"decl":"git_commit","type":"struct","value":"git_commit","file":"types.h","line":120,"lineto":120,"tdef":"typedef","description":" Parsed representation of a commit object. ","comments":"","used":{"returns":[],"needs":["git_branch_create","git_cherrypick","git_cherrypick_commit","git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_dup","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id","git_diff_commit_as_email","git_merge_commits","git_revert","git_revert_commit"]}}],["git_config",{"decl":"git_config","type":"struct","value":"git_config","file":"types.h","line":138,"lineto":138,"tdef":"typedef","description":" Memory representation of a set of config files ","comments":"","used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot","git_repository_config","git_repository_config_snapshot","git_repository_set_config"]}}],["git_config_backend",{"decl":"git_config_backend","type":"struct","value":"git_config_backend","file":"types.h","line":141,"lineto":141,"block":"unsigned int version\nint readonly\nstruct git_config * cfg\nint (*)(struct git_config_backend *, git_config_level_t) open\nint (*)(struct git_config_backend *, const char *, git_config_entry **) get\nint (*)(struct git_config_backend *, const char *, const char *) set\nint (*)(git_config_backend *, const char *, const char *, const char *) set_multivar\nint (*)(struct git_config_backend *, const char *) del\nint (*)(struct git_config_backend *, const char *, const char *) del_multivar\nint (*)(git_config_iterator **, struct git_config_backend *) iterator\nint (*)(struct git_config_backend **, struct git_config_backend *) snapshot\nint (*)(struct git_config_backend *) lock\nint (*)(struct git_config_backend *, int) unlock\nvoid (*)(struct git_config_backend *) free","tdef":"typedef","description":" Interface to access a configuration file ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int","name":"readonly","comments":" True if this backend is for a snapshot "},{"type":"struct git_config *","name":"cfg","comments":""},{"type":"int (*)(struct git_config_backend *, git_config_level_t)","name":"open","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, git_config_entry **)","name":"get","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"set","comments":""},{"type":"int (*)(git_config_backend *, const char *, const char *, const char *)","name":"set_multivar","comments":""},{"type":"int (*)(struct git_config_backend *, const char *)","name":"del","comments":""},{"type":"int (*)(struct git_config_backend *, const char *, const char *)","name":"del_multivar","comments":""},{"type":"int (*)(git_config_iterator **, struct git_config_backend *)","name":"iterator","comments":""},{"type":"int (*)(struct git_config_backend **, struct git_config_backend *)","name":"snapshot","comments":" Produce a read-only version of this backend "},{"type":"int (*)(struct git_config_backend *)","name":"lock","comments":" Lock this backend.\n\n Prevent any writes to the data store backing this\n backend. Any updates must not be visible to any other\n readers."},{"type":"int (*)(struct git_config_backend *, int)","name":"unlock","comments":" Unlock the data store backing this backend. If success is\n true, the changes should be committed, otherwise rolled\n back."},{"type":"void (*)(struct git_config_backend *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_backend_foreach_match","git_config_init_backend"]}}],["git_config_entry",{"decl":["const char * name","const char * value","git_config_level_t level","void (*)(struct git_config_entry *) free","void * payload"],"type":"struct","value":"git_config_entry","file":"config.h","line":64,"lineto":70,"block":"const char * name\nconst char * value\ngit_config_level_t level\nvoid (*)(struct git_config_entry *) free\nvoid * payload","tdef":"typedef","description":" An entry in a configuration file","comments":"","fields":[{"type":"const char *","name":"name","comments":" Name of the entry (normalised) "},{"type":"const char *","name":"value","comments":" String value of the entry "},{"type":"git_config_level_t","name":"level","comments":" Which config file this was found in "},{"type":"void (*)(struct git_config_entry *)","name":"free","comments":" Free function for this entry "},{"type":"void *","name":"payload","comments":" Opaque value for the free function. Do not read or write "}],"used":{"returns":[],"needs":["git_config_entry_free","git_config_get_entry","git_config_next"]}}],["git_config_iterator",{"decl":["git_config_backend * backend","unsigned int flags","int (*)(git_config_entry **, git_config_iterator *) next","void (*)(git_config_iterator *) free"],"type":"struct","value":"git_config_iterator","file":"sys/config.h","line":34,"lineto":48,"block":"git_config_backend * backend\nunsigned int flags\nint (*)(git_config_entry **, git_config_iterator *) next\nvoid (*)(git_config_iterator *) free","tdef":null,"description":" Every iterator must have this struct as its first element, so the\n API can talk to it. You'd define your iterator as","comments":"<pre><code> struct my_iterator {             git_config_iterator parent;             ...     }\n</code></pre>\n\n<p>and assign <code>iter-&gt;parent.backend</code> to your <code>git_config_backend</code>.</p>\n","fields":[{"type":"git_config_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"flags","comments":""},{"type":"int (*)(git_config_entry **, git_config_iterator *)","name":"next","comments":" Return the current entry and advance the iterator. The\n memory belongs to the library."},{"type":"void (*)(git_config_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_multivar_iterator_new","git_config_next"]}}],["git_config_level_t",{"decl":["GIT_CONFIG_LEVEL_PROGRAMDATA","GIT_CONFIG_LEVEL_SYSTEM","GIT_CONFIG_LEVEL_XDG","GIT_CONFIG_LEVEL_GLOBAL","GIT_CONFIG_LEVEL_LOCAL","GIT_CONFIG_LEVEL_APP","GIT_CONFIG_HIGHEST_LEVEL"],"type":"enum","file":"config.h","line":31,"lineto":59,"block":"GIT_CONFIG_LEVEL_PROGRAMDATA\nGIT_CONFIG_LEVEL_SYSTEM\nGIT_CONFIG_LEVEL_XDG\nGIT_CONFIG_LEVEL_GLOBAL\nGIT_CONFIG_LEVEL_LOCAL\nGIT_CONFIG_LEVEL_APP\nGIT_CONFIG_HIGHEST_LEVEL","tdef":"typedef","description":" Priority level of a config file.\n These priority levels correspond to the natural escalation logic\n (from higher to lower) when searching for config entries in git.git.","comments":"<p>git_config_open_default() and git_repository_config() honor those priority levels as well.</p>\n","fields":[{"type":"int","name":"GIT_CONFIG_LEVEL_PROGRAMDATA","comments":"<p>System-wide on Windows, for compatibility with portable git </p>\n","value":1},{"type":"int","name":"GIT_CONFIG_LEVEL_SYSTEM","comments":"<p>System-wide configuration file; /etc/gitconfig on Linux systems </p>\n","value":2},{"type":"int","name":"GIT_CONFIG_LEVEL_XDG","comments":"<p>XDG compatible configuration file; typically ~/.config/git/config </p>\n","value":3},{"type":"int","name":"GIT_CONFIG_LEVEL_GLOBAL","comments":"<p>User-specific configuration file (also called Global configuration\n file); typically ~/.gitconfig</p>\n","value":4},{"type":"int","name":"GIT_CONFIG_LEVEL_LOCAL","comments":"<p>Repository specific configuration file; $WORK_DIR/.git/config on\n non-bare repos</p>\n","value":5},{"type":"int","name":"GIT_CONFIG_LEVEL_APP","comments":"<p>Application specific configuration file; freely defined by applications</p>\n","value":6},{"type":"int","name":"GIT_CONFIG_HIGHEST_LEVEL","comments":"<p>Represents the highest level available config file (i.e. the most\n specific config file available that actually is loaded)</p>\n","value":-1}],"used":{"returns":[],"needs":["git_config_add_backend","git_config_add_file_ondisk","git_config_open_level"]}}],["git_cred_default",{"decl":"git_cred_default","type":"struct","value":"git_cred_default","file":"transport.h","line":176,"lineto":176,"tdef":"typedef","description":" A key for NTLM/Kerberos \"default\" credentials ","comments":"","used":{"returns":[],"needs":[]}}],["git_cred_ssh_custom",{"decl":["git_cred parent","char * username","char * publickey","size_t publickey_len","git_cred_sign_callback sign_callback","void * payload"],"type":"struct","value":"git_cred_ssh_custom","file":"transport.h","line":166,"lineto":173,"block":"git_cred parent\nchar * username\nchar * publickey\nsize_t publickey_len\ngit_cred_sign_callback sign_callback\nvoid * payload","tdef":"typedef","description":" A key with a custom signature function","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"size_t","name":"publickey_len","comments":""},{"type":"git_cred_sign_callback","name":"sign_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_ssh_interactive",{"decl":["git_cred parent","char * username","git_cred_ssh_interactive_callback prompt_callback","void * payload"],"type":"struct","value":"git_cred_ssh_interactive","file":"transport.h","line":156,"lineto":161,"block":"git_cred parent\nchar * username\ngit_cred_ssh_interactive_callback prompt_callback\nvoid * payload","tdef":"typedef","description":" Keyboard-interactive based ssh authentication","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"git_cred_ssh_interactive_callback","name":"prompt_callback","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":["git_cred_ssh_interactive_new"]}}],["git_cred_ssh_key",{"decl":["git_cred parent","char * username","char * publickey","char * privatekey","char * passphrase"],"type":"struct","value":"git_cred_ssh_key","file":"transport.h","line":145,"lineto":151,"block":"git_cred parent\nchar * username\nchar * publickey\nchar * privatekey\nchar * passphrase","tdef":"typedef","description":" A ssh key from disk","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"publickey","comments":""},{"type":"char *","name":"privatekey","comments":""},{"type":"char *","name":"passphrase","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_username",{"decl":["git_cred parent","char [1] username"],"type":"struct","value":"git_cred_username","file":"transport.h","line":179,"lineto":182,"block":"git_cred parent\nchar [1] username","tdef":"typedef","description":" Username-only credential information ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char [1]","name":"username","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_payload",{"decl":["const char * username","const char * password"],"type":"struct","value":"git_cred_userpass_payload","file":"cred_helpers.h","line":24,"lineto":27,"block":"const char * username\nconst char * password","tdef":"typedef","description":" Payload for git_cred_stock_userpass_plaintext.","comments":"","fields":[{"type":"const char *","name":"username","comments":""},{"type":"const char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_cred_userpass_plaintext",{"decl":["git_cred parent","char * username","char * password"],"type":"struct","value":"git_cred_userpass_plaintext","file":"transport.h","line":122,"lineto":126,"block":"git_cred parent\nchar * username\nchar * password","tdef":"typedef","description":" A plaintext username and password ","comments":"","fields":[{"type":"git_cred","name":"parent","comments":""},{"type":"char *","name":"username","comments":""},{"type":"char *","name":"password","comments":""}],"used":{"returns":[],"needs":[]}}],["git_credtype_t",{"decl":["GIT_CREDTYPE_USERPASS_PLAINTEXT","GIT_CREDTYPE_SSH_KEY","GIT_CREDTYPE_SSH_CUSTOM","GIT_CREDTYPE_DEFAULT","GIT_CREDTYPE_SSH_INTERACTIVE","GIT_CREDTYPE_USERNAME","GIT_CREDTYPE_SSH_MEMORY"],"type":"enum","file":"transport.h","line":81,"lineto":111,"block":"GIT_CREDTYPE_USERPASS_PLAINTEXT\nGIT_CREDTYPE_SSH_KEY\nGIT_CREDTYPE_SSH_CUSTOM\nGIT_CREDTYPE_DEFAULT\nGIT_CREDTYPE_SSH_INTERACTIVE\nGIT_CREDTYPE_USERNAME\nGIT_CREDTYPE_SSH_MEMORY","tdef":"typedef","description":" Authentication type requested ","comments":"","fields":[{"type":"int","name":"GIT_CREDTYPE_USERPASS_PLAINTEXT","comments":"","value":1},{"type":"int","name":"GIT_CREDTYPE_SSH_KEY","comments":"","value":2},{"type":"int","name":"GIT_CREDTYPE_SSH_CUSTOM","comments":"","value":4},{"type":"int","name":"GIT_CREDTYPE_DEFAULT","comments":"","value":8},{"type":"int","name":"GIT_CREDTYPE_SSH_INTERACTIVE","comments":"","value":16},{"type":"int","name":"GIT_CREDTYPE_USERNAME","comments":"<p>Username-only information</p>\n\n<p>If the SSH transport does not know which username to use,\n it will ask via this credential type.</p>\n","value":32},{"type":"int","name":"GIT_CREDTYPE_SSH_MEMORY","comments":"<p>Credentials read from memory.</p>\n\n<p>Only available for libssh2+OpenSSL for now.</p>\n","value":64}],"used":{"returns":[],"needs":[]}}],["git_cvar_map",{"decl":["git_cvar_t cvar_type","const char * str_match","int map_value"],"type":"struct","value":"git_cvar_map","file":"config.h","line":93,"lineto":97,"block":"git_cvar_t cvar_type\nconst char * str_match\nint map_value","tdef":"typedef","description":" Mapping from config variables to values.","comments":"","fields":[{"type":"git_cvar_t","name":"cvar_type","comments":""},{"type":"const char *","name":"str_match","comments":""},{"type":"int","name":"map_value","comments":""}],"used":{"returns":[],"needs":["git_config_get_mapped","git_config_lookup_map_value"]}}],["git_cvar_t",{"decl":["GIT_CVAR_FALSE","GIT_CVAR_TRUE","GIT_CVAR_INT32","GIT_CVAR_STRING"],"type":"enum","file":"config.h","line":83,"lineto":88,"block":"GIT_CVAR_FALSE\nGIT_CVAR_TRUE\nGIT_CVAR_INT32\nGIT_CVAR_STRING","tdef":"typedef","description":" Config var type","comments":"","fields":[{"type":"int","name":"GIT_CVAR_FALSE","comments":"","value":0},{"type":"int","name":"GIT_CVAR_TRUE","comments":"","value":1},{"type":"int","name":"GIT_CVAR_INT32","comments":"","value":2},{"type":"int","name":"GIT_CVAR_STRING","comments":"","value":3}],"used":{"returns":[],"needs":[]}}],["git_delta_t",{"decl":["GIT_DELTA_UNMODIFIED","GIT_DELTA_ADDED","GIT_DELTA_DELETED","GIT_DELTA_MODIFIED","GIT_DELTA_RENAMED","GIT_DELTA_COPIED","GIT_DELTA_IGNORED","GIT_DELTA_UNTRACKED","GIT_DELTA_TYPECHANGE","GIT_DELTA_UNREADABLE","GIT_DELTA_CONFLICTED"],"type":"enum","file":"diff.h","line":246,"lineto":258,"block":"GIT_DELTA_UNMODIFIED\nGIT_DELTA_ADDED\nGIT_DELTA_DELETED\nGIT_DELTA_MODIFIED\nGIT_DELTA_RENAMED\nGIT_DELTA_COPIED\nGIT_DELTA_IGNORED\nGIT_DELTA_UNTRACKED\nGIT_DELTA_TYPECHANGE\nGIT_DELTA_UNREADABLE\nGIT_DELTA_CONFLICTED","tdef":"typedef","description":" What type of change is described by a git_diff_delta?","comments":"<p><code>GIT_DELTA_RENAMED</code> and <code>GIT_DELTA_COPIED</code> will only show up if you run <code>git_diff_find_similar()</code> on the diff object.</p>\n\n<p><code>GIT_DELTA_TYPECHANGE</code> only shows up given <code>GIT_DIFF_INCLUDE_TYPECHANGE</code> in the option flags (otherwise type changes will be split into ADDED / DELETED pairs).</p>\n","fields":[{"type":"int","name":"GIT_DELTA_UNMODIFIED","comments":"<p>no changes </p>\n","value":0},{"type":"int","name":"GIT_DELTA_ADDED","comments":"<p>entry does not exist in old version </p>\n","value":1},{"type":"int","name":"GIT_DELTA_DELETED","comments":"<p>entry does not exist in new version </p>\n","value":2},{"type":"int","name":"GIT_DELTA_MODIFIED","comments":"<p>entry content changed between old and new </p>\n","value":3},{"type":"int","name":"GIT_DELTA_RENAMED","comments":"<p>entry was renamed between old and new </p>\n","value":4},{"type":"int","name":"GIT_DELTA_COPIED","comments":"<p>entry was copied from another old entry </p>\n","value":5},{"type":"int","name":"GIT_DELTA_IGNORED","comments":"<p>entry is ignored item in workdir </p>\n","value":6},{"type":"int","name":"GIT_DELTA_UNTRACKED","comments":"<p>entry is untracked item in workdir </p>\n","value":7},{"type":"int","name":"GIT_DELTA_TYPECHANGE","comments":"<p>type of entry changed between old and new </p>\n","value":8},{"type":"int","name":"GIT_DELTA_UNREADABLE","comments":"<p>entry is unreadable </p>\n","value":9},{"type":"int","name":"GIT_DELTA_CONFLICTED","comments":"<p>entry in the index is conflicted </p>\n","value":10}],"used":{"returns":[],"needs":["git_diff_num_deltas_of_type","git_diff_status_char"]}}],["git_describe_format_options",{"decl":["unsigned int version","unsigned int abbreviated_size","int always_use_long_format","const char * dirty_suffix"],"type":"struct","value":"git_describe_format_options","file":"describe.h","line":78,"lineto":98,"block":"unsigned int version\nunsigned int abbreviated_size\nint always_use_long_format\nconst char * dirty_suffix","tdef":"typedef","description":" Options for formatting the describe string","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"abbreviated_size","comments":" Size of the abbreviated commit id to use. This value is the\n lower bound for the length of the abbreviated string. The\n default is 7."},{"type":"int","name":"always_use_long_format","comments":" Set to use the long format even when a shorter name could be used."},{"type":"const char *","name":"dirty_suffix","comments":" If the workdir is dirty and this is set, this string will\n be appended to the description string."}],"used":{"returns":[],"needs":["git_describe_format"]}}],["git_describe_options",{"decl":["unsigned int version","unsigned int max_candidates_tags","unsigned int describe_strategy","const char * pattern","int only_follow_first_parent","int show_commit_oid_as_fallback"],"type":"struct","value":"git_describe_options","file":"describe.h","line":44,"lineto":62,"block":"unsigned int version\nunsigned int max_candidates_tags\nunsigned int describe_strategy\nconst char * pattern\nint only_follow_first_parent\nint show_commit_oid_as_fallback","tdef":"typedef","description":" Describe options structure","comments":"<p>Initialize with <code>GIT_DESCRIBE_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"max_candidates_tags","comments":" default: 10 "},{"type":"unsigned int","name":"describe_strategy","comments":" default: GIT_DESCRIBE_DEFAULT "},{"type":"const char *","name":"pattern","comments":""},{"type":"int","name":"only_follow_first_parent","comments":" When calculating the distance from the matching tag or\n reference, only walk down the first-parent ancestry."},{"type":"int","name":"show_commit_oid_as_fallback","comments":" If no matching tag or reference is found, the describe\n operation would normally fail. If this option is set, it\n will instead fall back to showing the full id of the\n commit."}],"used":{"returns":[],"needs":["git_describe_commit","git_describe_workdir"]}}],["git_describe_result",{"decl":"git_describe_result","type":"struct","value":"git_describe_result","file":"describe.h","line":111,"lineto":111,"tdef":"typedef","description":" A struct that stores the result of a describe operation.","comments":"","used":{"returns":[],"needs":["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]}}],["git_describe_strategy_t",{"decl":["GIT_DESCRIBE_DEFAULT","GIT_DESCRIBE_TAGS","GIT_DESCRIBE_ALL"],"type":"enum","file":"describe.h","line":30,"lineto":34,"block":"GIT_DESCRIBE_DEFAULT\nGIT_DESCRIBE_TAGS\nGIT_DESCRIBE_ALL","tdef":"typedef","description":" Reference lookup strategy","comments":"<p>These behave like the --tags and --all optios to git-describe, namely they say to look for any reference in either refs/tags/ or refs/ respectively.</p>\n","fields":[{"type":"int","name":"GIT_DESCRIBE_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_DESCRIBE_TAGS","comments":"","value":1},{"type":"int","name":"GIT_DESCRIBE_ALL","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff",{"decl":"git_diff","type":"struct","value":"git_diff","file":"diff.h","line":219,"lineto":219,"tdef":"typedef","description":" The diff object that contains all individual file deltas.","comments":"<p>This is an opaque structure which will be allocated by one of the diff generator functions below (such as <code>git_diff_tree_to_tree</code>).  You are responsible for releasing the object memory when done, using the <code>git_diff_free()</code> function.</p>\n","used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_checkout_notify_cb","git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_file_cb","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_hunk_cb","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_line_cb","git_diff_merge","git_diff_notify_cb","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_progress_cb","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_print","git_pathspec_match_diff","git_status_list_get_perfdata"]}}],["git_diff_binary",{"decl":["unsigned int contains_data","git_diff_binary_file old_file","git_diff_binary_file new_file"],"type":"struct","value":"git_diff_binary","file":"diff.h","line":492,"lineto":503,"block":"unsigned int contains_data\ngit_diff_binary_file old_file\ngit_diff_binary_file new_file","tdef":"typedef","description":" Structure describing the binary contents of a diff. ","comments":"","fields":[{"type":"unsigned int","name":"contains_data","comments":" Whether there is data in this binary structure or not.  If this\n is `1`, then this was produced and included binary content.  If\n this is `0` then this was generated knowing only that a binary\n file changed but without providing the data, probably from a patch\n that said `Binary files a/file.txt and b/file.txt differ`."},{"type":"git_diff_binary_file","name":"old_file","comments":" The contents of the old file. "},{"type":"git_diff_binary_file","name":"new_file","comments":" The contents of the new file. "}],"used":{"returns":[],"needs":["git_diff_binary_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_binary_file",{"decl":["git_diff_binary_t type","const char * data","size_t datalen","size_t inflatedlen"],"type":"struct","value":"git_diff_binary_file","file":"diff.h","line":477,"lineto":489,"block":"git_diff_binary_t type\nconst char * data\nsize_t datalen\nsize_t inflatedlen","tdef":"typedef","description":" The contents of one of the files in a binary diff. ","comments":"","fields":[{"type":"git_diff_binary_t","name":"type","comments":" The type of binary data for this file. "},{"type":"const char *","name":"data","comments":" The binary data, deflated. "},{"type":"size_t","name":"datalen","comments":" The length of the binary data. "},{"type":"size_t","name":"inflatedlen","comments":" The length of the binary data after inflation. "}],"used":{"returns":[],"needs":[]}}],["git_diff_binary_t",{"decl":["GIT_DIFF_BINARY_NONE","GIT_DIFF_BINARY_LITERAL","GIT_DIFF_BINARY_DELTA"],"type":"enum","file":"diff.h","line":465,"lineto":474,"block":"GIT_DIFF_BINARY_NONE\nGIT_DIFF_BINARY_LITERAL\nGIT_DIFF_BINARY_DELTA","tdef":"typedef","description":" When producing a binary diff, the binary data returned will be\n either the deflated full (\"literal\") contents of the file, or\n the deflated binary delta between the two sides (whichever is\n smaller).","comments":"","fields":[{"type":"int","name":"GIT_DIFF_BINARY_NONE","comments":"<p>There is no binary delta. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_BINARY_LITERAL","comments":"<p>The binary data is the literal contents of the file. </p>\n","value":1},{"type":"int","name":"GIT_DIFF_BINARY_DELTA","comments":"<p>The binary data is the delta from one side to the other. </p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_diff_delta",{"decl":["git_delta_t status","uint32_t flags","uint16_t similarity","uint16_t nfiles","git_diff_file old_file","git_diff_file new_file"],"type":"struct","value":"git_diff_delta","file":"diff.h","line":331,"lineto":338,"block":"git_delta_t status\nuint32_t flags\nuint16_t similarity\nuint16_t nfiles\ngit_diff_file old_file\ngit_diff_file new_file","tdef":"typedef","description":" Description of changes to one entry.","comments":"<p>When iterating over a diff, this will be passed to most callbacks and you can use the contents to understand exactly what has changed.</p>\n\n<p>The <code>old_file</code> represents the &quot;from&quot; side of the diff and the <code>new_file</code> represents to &quot;to&quot; side of the diff.  What those means depend on the function that was used to generate the diff and will be documented below. You can also use the <code>GIT_DIFF_REVERSE</code> flag to flip it around.</p>\n\n<p>Although the two sides of the delta are named &quot;old_file&quot; and &quot;new_file&quot;, they actually may correspond to entries that represent a file, a symbolic link, a submodule commit id, or even a tree (if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>Under some circumstances, in the name of efficiency, not all fields will be filled in, but we generally try to fill in as much as possible.  One example is that the &quot;flags&quot; field may not have either the <code>BINARY</code> or the <code>NOT_BINARY</code> flag set to avoid examining file contents if you do not pass in hunk and/or line callbacks to the diff foreach iteration function.  It will just use the git attributes for those files.</p>\n\n<p>The similarity score is zero unless you call <code>git_diff_find_similar()</code> which does a similarity analysis of files in the diff.  Use that function to do rename and copy detection, and to split heavily modified files in add/delete pairs.  After that call, deltas with a status of GIT_DELTA_RENAMED or GIT_DELTA_COPIED will have a similarity score between 0 and 100 indicating how similar the old and new sides are.</p>\n\n<p>If you ask <code>git_diff_find_similar</code> to find heavily modified files to break, but to not <em>actually</em> break the records, then GIT_DELTA_MODIFIED records may have a non-zero similarity score if the self-similarity is below the split threshold.  To display this value like core Git, invert the score (a la <code>printf(&quot;M%03d&quot;, 100 - delta-&gt;similarity)</code>).</p>\n","fields":[{"type":"git_delta_t","name":"status","comments":""},{"type":"uint32_t","name":"flags","comments":" git_diff_flag_t values "},{"type":"uint16_t","name":"similarity","comments":" for RENAMED and COPIED, value 0-100 "},{"type":"uint16_t","name":"nfiles","comments":" number of files in this delta "},{"type":"git_diff_file","name":"old_file","comments":""},{"type":"git_diff_file","name":"new_file","comments":""}],"used":{"returns":["git_diff_get_delta","git_patch_get_delta","git_pathspec_match_list_diff_entry"],"needs":["git_diff_binary_cb","git_diff_file_cb","git_diff_hunk_cb","git_diff_line_cb","git_diff_notify_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle"]}}],["git_diff_file",{"decl":["git_oid id","const char * path","git_off_t size","uint32_t flags","uint16_t mode","uint16_t id_abbrev"],"type":"struct","value":"git_diff_file","file":"diff.h","line":286,"lineto":293,"block":"git_oid id\nconst char * path\ngit_off_t size\nuint32_t flags\nuint16_t mode\nuint16_t id_abbrev","tdef":"typedef","description":" Description of one side of a delta.","comments":"<p>Although this is called a &quot;file&quot;, it could represent a file, a symbolic link, a submodule commit id, or even a tree (although that only if you are tracking type changes or ignored/untracked directories).</p>\n\n<p>The <code>id</code> is the <code>git_oid</code> of the item.  If the entry represents an absent side of a diff (e.g. the <code>old_file</code> of a <code>GIT_DELTA_ADDED</code> delta), then the oid will be zeroes.</p>\n\n<p><code>path</code> is the NUL-terminated path to the entry relative to the working directory of the repository.</p>\n\n<p><code>size</code> is the size of the entry in bytes.</p>\n\n<p><code>flags</code> is a combination of the <code>git_diff_flag_t</code> types</p>\n\n<p><code>mode</code> is, roughly, the stat() <code>st_mode</code> value for the item.  This will be restricted to one of the <code>git_filemode_t</code> values.</p>\n\n<p>The <code>id_abbrev</code> represents the known length of the <code>id</code> field, when converted to a hex string.  It is generally <code>GIT_OID_HEXSZ</code>, unless this delta was created from reading a patch file, in which case it may be abbreviated to something reasonable, like 7 characters.</p>\n","fields":[{"type":"git_oid","name":"id","comments":""},{"type":"const char *","name":"path","comments":""},{"type":"git_off_t","name":"size","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint16_t","name":"mode","comments":""},{"type":"uint16_t","name":"id_abbrev","comments":""}],"used":{"returns":[],"needs":["git_checkout_notify_cb","git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach"]}}],["git_diff_find_options",{"decl":["unsigned int version","uint32_t flags","uint16_t rename_threshold","uint16_t rename_from_rewrite_threshold","uint16_t copy_threshold","uint16_t break_rewrite_threshold","size_t rename_limit","git_diff_similarity_metric * metric"],"type":"struct","value":"git_diff_find_options","file":"diff.h","line":697,"lineto":723,"block":"unsigned int version\nuint32_t flags\nuint16_t rename_threshold\nuint16_t rename_from_rewrite_threshold\nuint16_t copy_threshold\nuint16_t break_rewrite_threshold\nsize_t rename_limit\ngit_diff_similarity_metric * metric","tdef":"typedef","description":" Control behavior of rename and copy detection","comments":"<p>These options mostly mimic parameters that can be passed to git-diff.</p>\n\n<ul>\n<li><code>rename_threshold</code> is the same as the -M option with a value - <code>copy_threshold</code> is the same as the -C option with a value - <code>rename_from_rewrite_threshold</code> matches the top of the -B option - <code>break_rewrite_threshold</code> matches the bottom of the -B option - <code>rename_limit</code> is the maximum number of matches to consider for   a particular file.  This is a little different from the <code>-l</code> option   to regular Git because we will still process up to this many matches   before abandoning the search.</li>\n</ul>\n\n<p>The <code>metric</code> option allows you to plug in a custom similarity metric. Set it to NULL for the default internal metric which is based on sampling hashes of ranges of data in the file.  The default metric is a pretty good similarity approximation that should work fairly well for both text and binary data, and is pretty fast with fixed memory overhead.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":" Combination of git_diff_find_t values (default GIT_DIFF_FIND_BY_CONFIG).\n NOTE: if you don't explicitly set this, `diff.renames` could be set\n to false, resulting in `git_diff_find_similar` doing nothing."},{"type":"uint16_t","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50) "},{"type":"uint16_t","name":"rename_from_rewrite_threshold","comments":" Similarity of modified to be eligible rename source (default 50) "},{"type":"uint16_t","name":"copy_threshold","comments":" Similarity to consider a file a copy (default 50) "},{"type":"uint16_t","name":"break_rewrite_threshold","comments":" Similarity to split modify into delete/add pair (default 60) "},{"type":"size_t","name":"rename_limit","comments":" Maximum similarity sources to examine for a file (somewhat like\n  git-diff's `-l` option or `diff.renameLimit` config) (default 200)"},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "}],"used":{"returns":[],"needs":["git_diff_find_init_options","git_diff_find_similar"]}}],["git_diff_find_t",{"decl":["GIT_DIFF_FIND_BY_CONFIG","GIT_DIFF_FIND_RENAMES","GIT_DIFF_FIND_RENAMES_FROM_REWRITES","GIT_DIFF_FIND_COPIES","GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","GIT_DIFF_FIND_REWRITES","GIT_DIFF_BREAK_REWRITES","GIT_DIFF_FIND_AND_BREAK_REWRITES","GIT_DIFF_FIND_FOR_UNTRACKED","GIT_DIFF_FIND_ALL","GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","GIT_DIFF_FIND_IGNORE_WHITESPACE","GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","GIT_DIFF_FIND_EXACT_MATCH_ONLY","GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","GIT_DIFF_FIND_REMOVE_UNMODIFIED"],"type":"enum","file":"diff.h","line":591,"lineto":660,"block":"GIT_DIFF_FIND_BY_CONFIG\nGIT_DIFF_FIND_RENAMES\nGIT_DIFF_FIND_RENAMES_FROM_REWRITES\nGIT_DIFF_FIND_COPIES\nGIT_DIFF_FIND_COPIES_FROM_UNMODIFIED\nGIT_DIFF_FIND_REWRITES\nGIT_DIFF_BREAK_REWRITES\nGIT_DIFF_FIND_AND_BREAK_REWRITES\nGIT_DIFF_FIND_FOR_UNTRACKED\nGIT_DIFF_FIND_ALL\nGIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE\nGIT_DIFF_FIND_IGNORE_WHITESPACE\nGIT_DIFF_FIND_DONT_IGNORE_WHITESPACE\nGIT_DIFF_FIND_EXACT_MATCH_ONLY\nGIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY\nGIT_DIFF_FIND_REMOVE_UNMODIFIED","tdef":"typedef","description":" Flags to control the behavior of diff rename/copy detection.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FIND_BY_CONFIG","comments":"<p>Obey <code>diff.renames</code>. Overridden by any other GIT_DIFF_FIND_... flag. </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_RENAMES","comments":"<p>Look for renames? (<code>--find-renames</code>) </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FIND_RENAMES_FROM_REWRITES","comments":"<p>Consider old side of MODIFIED for renames? (<code>--break-rewrites=N</code>) </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FIND_COPIES","comments":"<p>Look for copies? (a la <code>--find-copies</code>). </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED","comments":"<p>Consider UNMODIFIED as copy sources? (<code>--find-copies-harder</code>).</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNMODIFIED when\n the initial <code>git_diff</code> is being generated.</p>\n","value":8},{"type":"int","name":"GIT_DIFF_FIND_REWRITES","comments":"<p>Mark significant rewrites for split (<code>--break-rewrites=/M</code>) </p>\n","value":16},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES","comments":"<p>Actually split large rewrites into delete/add pairs </p>\n","value":32},{"type":"int","name":"GIT_DIFF_FIND_AND_BREAK_REWRITES","comments":"<p>Mark rewrites for split and break into delete/add pairs </p>\n","value":48},{"type":"int","name":"GIT_DIFF_FIND_FOR_UNTRACKED","comments":"<p>Find renames/copies for UNTRACKED items in working directory.</p>\n\n<p>For this to work correctly, use GIT_DIFF_INCLUDE_UNTRACKED when the\n initial <code>git_diff</code> is being generated (and obviously the diff must\n be against the working directory for this to make sense).</p>\n","value":64},{"type":"int","name":"GIT_DIFF_FIND_ALL","comments":"<p>Turn on all finding features. </p>\n","value":255},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE","comments":"<p>Measure similarity ignoring leading whitespace (default) </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FIND_IGNORE_WHITESPACE","comments":"<p>Measure similarity ignoring all whitespace </p>\n","value":4096},{"type":"int","name":"GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE","comments":"<p>Measure similarity including all data </p>\n","value":8192},{"type":"int","name":"GIT_DIFF_FIND_EXACT_MATCH_ONLY","comments":"<p>Measure similarity only by comparing SHAs (fast and cheap) </p>\n","value":16384},{"type":"int","name":"GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY","comments":"<p>Do not break rewrites unless they contribute to a rename.</p>\n\n<p>Normally, GIT_DIFF_FIND_AND_BREAK_REWRITES will measure the self-\n similarity of modified files and split the ones that have changed a\n lot into a DELETE / ADD pair.  Then the sides of that pair will be\n considered candidates for rename and copy detection.</p>\n\n<p>If you add this flag in and the split pair is <em>not</em> used for an\n actual rename or copy, then the modified record will be restored to\n a regular MODIFIED record instead of being split.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_FIND_REMOVE_UNMODIFIED","comments":"<p>Remove any UNMODIFIED deltas after find_similar is done.</p>\n\n<p>Using GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED to emulate the\n --find-copies-harder behavior requires building a diff with the\n GIT_DIFF_INCLUDE_UNMODIFIED flag.  If you do not want UNMODIFIED\n records in the final result, pass this flag to have them removed.</p>\n","value":65536}],"used":{"returns":[],"needs":[]}}],["git_diff_flag_t",{"decl":["GIT_DIFF_FLAG_BINARY","GIT_DIFF_FLAG_NOT_BINARY","GIT_DIFF_FLAG_VALID_ID","GIT_DIFF_FLAG_EXISTS"],"type":"enum","file":"diff.h","line":229,"lineto":234,"block":"GIT_DIFF_FLAG_BINARY\nGIT_DIFF_FLAG_NOT_BINARY\nGIT_DIFF_FLAG_VALID_ID\nGIT_DIFF_FLAG_EXISTS","tdef":"typedef","description":" Flags for the delta object and the file objects on each side.","comments":"<p>These flags are used for both the <code>flags</code> value of the <code>git_diff_delta</code> and the flags for the <code>git_diff_file</code> objects representing the old and new sides of the delta.  Values outside of this public range should be considered reserved for internal or future use.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_FLAG_BINARY","comments":"<p>file(s) treated as binary data </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FLAG_NOT_BINARY","comments":"<p>file(s) treated as text data </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FLAG_VALID_ID","comments":"<p><code>id</code> value is known correct </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FLAG_EXISTS","comments":"<p>file exists at this side of the delta </p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_diff_format_email_flags_t",{"decl":["GIT_DIFF_FORMAT_EMAIL_NONE","GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"],"type":"enum","file":"diff.h","line":1315,"lineto":1322,"block":"GIT_DIFF_FORMAT_EMAIL_NONE\nGIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","tdef":"typedef","description":" Formatting options for diff e-mail generation","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_NONE","comments":"<p>Normal patch, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER","comments":"<p>Don&#39;t insert &quot;[PATCH]&quot; in the subject header</p>\n","value":1}],"used":{"returns":[],"needs":["git_diff_commit_as_email"]}}],["git_diff_format_email_options",{"decl":["unsigned int version","git_diff_format_email_flags_t flags","size_t patch_no","size_t total_patches","const git_oid * id","const char * summary","const char * body","const git_signature * author"],"type":"struct","value":"git_diff_format_email_options","file":"diff.h","line":1327,"lineto":1349,"block":"unsigned int version\ngit_diff_format_email_flags_t flags\nsize_t patch_no\nsize_t total_patches\nconst git_oid * id\nconst char * summary\nconst char * body\nconst git_signature * author","tdef":"typedef","description":" Options for controlling the formatting of the generated e-mail.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_diff_format_email_flags_t","name":"flags","comments":""},{"type":"size_t","name":"patch_no","comments":" This patch number "},{"type":"size_t","name":"total_patches","comments":" Total number of patches in this series "},{"type":"const git_oid *","name":"id","comments":" id to use for the commit "},{"type":"const char *","name":"summary","comments":" Summary of the change "},{"type":"const char *","name":"body","comments":" Commit message's body "},{"type":"const git_signature *","name":"author","comments":" Author of the change "}],"used":{"returns":[],"needs":["git_diff_format_email","git_diff_format_email_init_options"]}}],["git_diff_format_t",{"decl":["GIT_DIFF_FORMAT_PATCH","GIT_DIFF_FORMAT_PATCH_HEADER","GIT_DIFF_FORMAT_RAW","GIT_DIFF_FORMAT_NAME_ONLY","GIT_DIFF_FORMAT_NAME_STATUS"],"type":"enum","file":"diff.h","line":1039,"lineto":1045,"block":"GIT_DIFF_FORMAT_PATCH\nGIT_DIFF_FORMAT_PATCH_HEADER\nGIT_DIFF_FORMAT_RAW\nGIT_DIFF_FORMAT_NAME_ONLY\nGIT_DIFF_FORMAT_NAME_STATUS","tdef":"typedef","description":" Possible output formats for diff data","comments":"","fields":[{"type":"int","name":"GIT_DIFF_FORMAT_PATCH","comments":"<p>full git diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_FORMAT_PATCH_HEADER","comments":"<p>just the file headers of patch </p>\n","value":2},{"type":"int","name":"GIT_DIFF_FORMAT_RAW","comments":"<p>like git diff --raw </p>\n","value":3},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_ONLY","comments":"<p>like git diff --name-only </p>\n","value":4},{"type":"int","name":"GIT_DIFF_FORMAT_NAME_STATUS","comments":"<p>like git diff --name-status </p>\n","value":5}],"used":{"returns":[],"needs":["git_diff_print","git_diff_to_buf"]}}],["git_diff_hunk",{"decl":["int old_start","int old_lines","int new_start","int new_lines","size_t header_len","char [128] header"],"type":"struct","value":"git_diff_hunk","file":"diff.h","line":517,"lineto":524,"block":"int old_start\nint old_lines\nint new_start\nint new_lines\nsize_t header_len\nchar [128] header","tdef":"typedef","description":" Structure describing a hunk of a diff.","comments":"","fields":[{"type":"int","name":"old_start","comments":""},{"type":"int","name":"old_lines","comments":" Starting line number in old_file "},{"type":"int","name":"new_start","comments":" Number of lines in old_file "},{"type":"int","name":"new_lines","comments":" Starting line number in new_file "},{"type":"size_t","name":"header_len","comments":" Number of lines in new_file "},{"type":"char [128]","name":"header","comments":" Number of bytes in header text "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_hunk_cb","git_diff_line_cb","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_hunk"]}}],["git_diff_line",{"decl":["char origin","int old_lineno","int new_lineno","int num_lines","size_t content_len","git_off_t content_offset","const char * content"],"type":"struct","value":"git_diff_line","file":"diff.h","line":564,"lineto":572,"block":"char origin\nint old_lineno\nint new_lineno\nint num_lines\nsize_t content_len\ngit_off_t content_offset\nconst char * content","tdef":"typedef","description":" Structure describing a line (or data span) of a diff.","comments":"","fields":[{"type":"char","name":"origin","comments":" A git_diff_line_t value "},{"type":"int","name":"old_lineno","comments":" Line number in old file or -1 for added line "},{"type":"int","name":"new_lineno","comments":" Line number in new file or -1 for deleted line "},{"type":"int","name":"num_lines","comments":" Number of newline characters in content "},{"type":"size_t","name":"content_len","comments":" Number of bytes of data "},{"type":"git_off_t","name":"content_offset","comments":" Offset in the original file to the content "},{"type":"const char *","name":"content","comments":" Pointer to diff text, not NUL-byte terminated "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_foreach","git_diff_line_cb","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_patch_get_line_in_hunk","git_patch_print"]}}],["git_diff_line_t",{"decl":["GIT_DIFF_LINE_CONTEXT","GIT_DIFF_LINE_ADDITION","GIT_DIFF_LINE_DELETION","GIT_DIFF_LINE_CONTEXT_EOFNL","GIT_DIFF_LINE_ADD_EOFNL","GIT_DIFF_LINE_DEL_EOFNL","GIT_DIFF_LINE_FILE_HDR","GIT_DIFF_LINE_HUNK_HDR","GIT_DIFF_LINE_BINARY"],"type":"enum","file":"diff.h","line":543,"lineto":559,"block":"GIT_DIFF_LINE_CONTEXT\nGIT_DIFF_LINE_ADDITION\nGIT_DIFF_LINE_DELETION\nGIT_DIFF_LINE_CONTEXT_EOFNL\nGIT_DIFF_LINE_ADD_EOFNL\nGIT_DIFF_LINE_DEL_EOFNL\nGIT_DIFF_LINE_FILE_HDR\nGIT_DIFF_LINE_HUNK_HDR\nGIT_DIFF_LINE_BINARY","tdef":"typedef","description":" Line origin constants.","comments":"<p>These values describe where a line came from and will be passed to the git_diff_line_cb when iterating over a diff.  There are some special origin constants at the end that are used for the text output callbacks to demarcate lines that are actually part of the file or hunk headers.</p>\n","fields":[{"type":"int","name":"GIT_DIFF_LINE_CONTEXT","comments":"","value":32},{"type":"int","name":"GIT_DIFF_LINE_ADDITION","comments":"","value":43},{"type":"int","name":"GIT_DIFF_LINE_DELETION","comments":"","value":45},{"type":"int","name":"GIT_DIFF_LINE_CONTEXT_EOFNL","comments":"<p>Both files have no LF at end </p>\n","value":61},{"type":"int","name":"GIT_DIFF_LINE_ADD_EOFNL","comments":"<p>Old has no LF at end, new does </p>\n","value":62},{"type":"int","name":"GIT_DIFF_LINE_DEL_EOFNL","comments":"<p>Old has LF at end, new does not </p>\n","value":60},{"type":"int","name":"GIT_DIFF_LINE_FILE_HDR","comments":"","value":70},{"type":"int","name":"GIT_DIFF_LINE_HUNK_HDR","comments":"","value":72},{"type":"int","name":"GIT_DIFF_LINE_BINARY","comments":"<p>For &quot;Binary files x and y differ&quot; </p>\n","value":66}],"used":{"returns":[],"needs":[]}}],["git_diff_option_t",{"decl":["GIT_DIFF_NORMAL","GIT_DIFF_REVERSE","GIT_DIFF_INCLUDE_IGNORED","GIT_DIFF_RECURSE_IGNORED_DIRS","GIT_DIFF_INCLUDE_UNTRACKED","GIT_DIFF_RECURSE_UNTRACKED_DIRS","GIT_DIFF_INCLUDE_UNMODIFIED","GIT_DIFF_INCLUDE_TYPECHANGE","GIT_DIFF_INCLUDE_TYPECHANGE_TREES","GIT_DIFF_IGNORE_FILEMODE","GIT_DIFF_IGNORE_SUBMODULES","GIT_DIFF_IGNORE_CASE","GIT_DIFF_INCLUDE_CASECHANGE","GIT_DIFF_DISABLE_PATHSPEC_MATCH","GIT_DIFF_SKIP_BINARY_CHECK","GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","GIT_DIFF_UPDATE_INDEX","GIT_DIFF_INCLUDE_UNREADABLE","GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","GIT_DIFF_FORCE_TEXT","GIT_DIFF_FORCE_BINARY","GIT_DIFF_IGNORE_WHITESPACE","GIT_DIFF_IGNORE_WHITESPACE_CHANGE","GIT_DIFF_IGNORE_WHITESPACE_EOL","GIT_DIFF_SHOW_UNTRACKED_CONTENT","GIT_DIFF_SHOW_UNMODIFIED","GIT_DIFF_PATIENCE","GIT_DIFF_MINIMAL","GIT_DIFF_SHOW_BINARY"],"type":"enum","file":"diff.h","line":72,"lineto":209,"block":"GIT_DIFF_NORMAL\nGIT_DIFF_REVERSE\nGIT_DIFF_INCLUDE_IGNORED\nGIT_DIFF_RECURSE_IGNORED_DIRS\nGIT_DIFF_INCLUDE_UNTRACKED\nGIT_DIFF_RECURSE_UNTRACKED_DIRS\nGIT_DIFF_INCLUDE_UNMODIFIED\nGIT_DIFF_INCLUDE_TYPECHANGE\nGIT_DIFF_INCLUDE_TYPECHANGE_TREES\nGIT_DIFF_IGNORE_FILEMODE\nGIT_DIFF_IGNORE_SUBMODULES\nGIT_DIFF_IGNORE_CASE\nGIT_DIFF_INCLUDE_CASECHANGE\nGIT_DIFF_DISABLE_PATHSPEC_MATCH\nGIT_DIFF_SKIP_BINARY_CHECK\nGIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS\nGIT_DIFF_UPDATE_INDEX\nGIT_DIFF_INCLUDE_UNREADABLE\nGIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED\nGIT_DIFF_FORCE_TEXT\nGIT_DIFF_FORCE_BINARY\nGIT_DIFF_IGNORE_WHITESPACE\nGIT_DIFF_IGNORE_WHITESPACE_CHANGE\nGIT_DIFF_IGNORE_WHITESPACE_EOL\nGIT_DIFF_SHOW_UNTRACKED_CONTENT\nGIT_DIFF_SHOW_UNMODIFIED\nGIT_DIFF_PATIENCE\nGIT_DIFF_MINIMAL\nGIT_DIFF_SHOW_BINARY","tdef":"typedef","description":" Flags for diff options.  A combination of these flags can be passed\n in via the `flags` value in the `git_diff_options`.","comments":"","fields":[{"type":"int","name":"GIT_DIFF_NORMAL","comments":"<p>Normal diff, the default </p>\n","value":0},{"type":"int","name":"GIT_DIFF_REVERSE","comments":"<p>Reverse the sides of the diff </p>\n","value":1},{"type":"int","name":"GIT_DIFF_INCLUDE_IGNORED","comments":"<p>Include ignored files in the diff </p>\n","value":2},{"type":"int","name":"GIT_DIFF_RECURSE_IGNORED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_IGNORED, an entire ignored directory\n  will be marked with only a single entry in the diff; this flag\n  adds all files under the directory as IGNORED entries, too.</p>\n","value":4},{"type":"int","name":"GIT_DIFF_INCLUDE_UNTRACKED","comments":"<p>Include untracked files in the diff </p>\n","value":8},{"type":"int","name":"GIT_DIFF_RECURSE_UNTRACKED_DIRS","comments":"<p>Even with GIT_DIFF_INCLUDE_UNTRACKED, an entire untracked\n  directory will be marked with only a single entry in the diff\n  (a la what core Git does in <code>git status</code>); this flag adds <em>all</em>\n  files under untracked directories as UNTRACKED entries, too.</p>\n","value":16},{"type":"int","name":"GIT_DIFF_INCLUDE_UNMODIFIED","comments":"<p>Include unmodified files in the diff </p>\n","value":32},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE","comments":"<p>Normally, a type change between files will be converted into a\n  DELETED record for the old and an ADDED record for the new; this\n  options enabled the generation of TYPECHANGE delta records.</p>\n","value":64},{"type":"int","name":"GIT_DIFF_INCLUDE_TYPECHANGE_TREES","comments":"<p>Even with GIT_DIFF_INCLUDE_TYPECHANGE, blob-&gt;tree changes still\n  generally show as a DELETED blob.  This flag tries to correctly\n  label blob-&gt;tree transitions as TYPECHANGE records with new_file&#39;s\n  mode set to tree.  Note: the tree SHA will not be available.</p>\n","value":128},{"type":"int","name":"GIT_DIFF_IGNORE_FILEMODE","comments":"<p>Ignore file mode changes </p>\n","value":256},{"type":"int","name":"GIT_DIFF_IGNORE_SUBMODULES","comments":"<p>Treat all submodules as unmodified </p>\n","value":512},{"type":"int","name":"GIT_DIFF_IGNORE_CASE","comments":"<p>Use case insensitive filename comparisons </p>\n","value":1024},{"type":"int","name":"GIT_DIFF_INCLUDE_CASECHANGE","comments":"<p>May be combined with <code>GIT_DIFF_IGNORE_CASE</code> to specify that a file\n  that has changed case will be returned as an add/delete pair.</p>\n","value":2048},{"type":"int","name":"GIT_DIFF_DISABLE_PATHSPEC_MATCH","comments":"<p>If the pathspec is set in the diff options, this flags indicates\n  that the paths will be treated as literal paths instead of\n  fnmatch patterns.  Each path in the list must either be a full\n  path to a file or a directory.  (A trailing slash indicates that\n  the path will <em>only</em> match a directory).  If a directory is\n  specified, all children will be included.</p>\n","value":4096},{"type":"int","name":"GIT_DIFF_SKIP_BINARY_CHECK","comments":"<p>Disable updating of the <code>binary</code> flag in delta records.  This is\n  useful when iterating over a diff if you don&#39;t need hunk and data\n  callbacks and want to avoid having to load file completely.</p>\n","value":8192},{"type":"int","name":"GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS","comments":"<p>When diff finds an untracked directory, to match the behavior of\n  core Git, it scans the contents for IGNORED and UNTRACKED files.\n  If <em>all</em> contents are IGNORED, then the directory is IGNORED; if\n  any contents are not IGNORED, then the directory is UNTRACKED.\n  This is extra work that may not matter in many cases.  This flag\n  turns off that scan and immediately labels an untracked directory\n  as UNTRACKED (changing the behavior to not match core Git).</p>\n","value":16384},{"type":"int","name":"GIT_DIFF_UPDATE_INDEX","comments":"<p>When diff finds a file in the working directory with stat\n information different from the index, but the OID ends up being the\n same, write the correct stat information into the index.  Note:\n without this flag, diff will always leave the index untouched.</p>\n","value":32768},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE","comments":"<p>Include unreadable files in the diff </p>\n","value":65536},{"type":"int","name":"GIT_DIFF_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"<p>Include unreadable files in the diff </p>\n","value":131072},{"type":"int","name":"GIT_DIFF_FORCE_TEXT","comments":"<p>Treat all files as text, disabling binary attributes \n&amp;\n detection </p>\n","value":1048576},{"type":"int","name":"GIT_DIFF_FORCE_BINARY","comments":"<p>Treat all files as binary, disabling text diffs </p>\n","value":2097152},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":4194304},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":8388608},{"type":"int","name":"GIT_DIFF_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":16777216},{"type":"int","name":"GIT_DIFF_SHOW_UNTRACKED_CONTENT","comments":"<p>When generating patch text, include the content of untracked\n  files.  This automatically turns on GIT_DIFF_INCLUDE_UNTRACKED but\n  it does not turn on GIT_DIFF_RECURSE_UNTRACKED_DIRS.  Add that\n  flag if you want the content of every single UNTRACKED file.</p>\n","value":33554432},{"type":"int","name":"GIT_DIFF_SHOW_UNMODIFIED","comments":"<p>When generating output, include the names of unmodified files if\n  they are included in the git_diff.  Normally these are skipped in\n  the formats that list files (e.g. name-only, name-status, raw).\n  Even with this, these will not be included in patch format.</p>\n","value":67108864},{"type":"int","name":"GIT_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":268435456},{"type":"int","name":"GIT_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":536870912},{"type":"int","name":"GIT_DIFF_SHOW_BINARY","comments":"<p>Include the necessary deflate / delta information so that <code>git-apply</code>\n  can apply given diff information to binary files.</p>\n","value":1073741824}],"used":{"returns":[],"needs":[]}}],["git_diff_options",{"decl":["unsigned int version","uint32_t flags","git_submodule_ignore_t ignore_submodules","git_strarray pathspec","git_diff_notify_cb notify_cb","git_diff_progress_cb progress_cb","void * payload","uint32_t context_lines","uint32_t interhunk_lines","uint16_t id_abbrev","git_off_t max_size","const char * old_prefix","const char * new_prefix"],"type":"struct","value":"git_diff_options","file":"diff.h","line":402,"lineto":422,"block":"unsigned int version\nuint32_t flags\ngit_submodule_ignore_t ignore_submodules\ngit_strarray pathspec\ngit_diff_notify_cb notify_cb\ngit_diff_progress_cb progress_cb\nvoid * payload\nuint32_t context_lines\nuint32_t interhunk_lines\nuint16_t id_abbrev\ngit_off_t max_size\nconst char * old_prefix\nconst char * new_prefix","tdef":"typedef","description":" Structure describing options about how the diff should be executed.","comments":"<p>Setting all values of the structure to zero will yield the default values.  Similarly, passing NULL for the options structure will give the defaults.  The default values are marked below.</p>\n\n<ul>\n<li><code>flags</code> is a combination of the <code>git_diff_option_t</code> values above - <code>context_lines</code> is the number of unchanged lines that define the    boundary of a hunk (and to display before and after) - <code>interhunk_lines</code> is the maximum number of unchanged lines between    hunk boundaries before the hunks will be merged into a one. - <code>old_prefix</code> is the virtual &quot;directory&quot; to prefix to old file names   in hunk headers (default &quot;a&quot;) - <code>new_prefix</code> is the virtual &quot;directory&quot; to prefix to new file names   in hunk headers (default &quot;b&quot;) - <code>pathspec</code> is an array of paths / fnmatch patterns to constrain diff - <code>max_size</code> is a file size (in bytes) above which a blob will be marked   as binary automatically; pass a negative value to disable. - <code>notify_cb</code> is an optional callback function, notifying the consumer of   changes to the diff as new deltas are added. - <code>progress_cb</code> is an optional callback function, notifying the consumer of   which files are being examined as the diff is generated. - <code>payload</code> is the payload to pass to the callback functions. - <code>ignore_submodules</code> overrides the submodule ignore setting for all   submodules in the diff.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":" version for the struct "},{"type":"uint32_t","name":"flags","comments":" defaults to GIT_DIFF_NORMAL "},{"type":"git_submodule_ignore_t","name":"ignore_submodules","comments":" submodule ignore rule "},{"type":"git_strarray","name":"pathspec","comments":" defaults to include all paths "},{"type":"git_diff_notify_cb","name":"notify_cb","comments":""},{"type":"git_diff_progress_cb","name":"progress_cb","comments":""},{"type":"void *","name":"payload","comments":""},{"type":"uint32_t","name":"context_lines","comments":" defaults to 3 "},{"type":"uint32_t","name":"interhunk_lines","comments":" defaults to 0 "},{"type":"uint16_t","name":"id_abbrev","comments":" default 'core.abbrev' or 7 if unset "},{"type":"git_off_t","name":"max_size","comments":" defaults to 512MB "},{"type":"const char *","name":"old_prefix","comments":" defaults to \"a\" "},{"type":"const char *","name":"new_prefix","comments":" defaults to \"b\" "}],"used":{"returns":[],"needs":["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers"]}}],["git_diff_perfdata",{"decl":["unsigned int version","size_t stat_calls","size_t oid_calculations"],"type":"struct","value":"git_diff_perfdata","file":"sys/diff.h","line":67,"lineto":71,"block":"unsigned int version\nsize_t stat_calls\nsize_t oid_calculations","tdef":"typedef","description":" Performance data from diffing","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"size_t","name":"stat_calls","comments":" Number of stat() calls performed "},{"type":"size_t","name":"oid_calculations","comments":" Number of ID calculations "}],"used":{"returns":[],"needs":["git_diff_get_perfdata","git_status_list_get_perfdata"]}}],["git_diff_similarity_metric",{"decl":["int (*)(void **, const git_diff_file *, const char *, void *) file_signature","int (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature","void (*)(void *, void *) free_signature","int (*)(int *, void *, void *, void *) similarity","void * payload"],"type":"struct","value":"git_diff_similarity_metric","file":"diff.h","line":665,"lineto":675,"block":"int (*)(void **, const git_diff_file *, const char *, void *) file_signature\nint (*)(void **, const git_diff_file *, const char *, size_t, void *) buffer_signature\nvoid (*)(void *, void *) free_signature\nint (*)(int *, void *, void *, void *) similarity\nvoid * payload","tdef":"typedef","description":" Pluggable similarity metric","comments":"","fields":[{"type":"int (*)(void **, const git_diff_file *, const char *, void *)","name":"file_signature","comments":""},{"type":"int (*)(void **, const git_diff_file *, const char *, size_t, void *)","name":"buffer_signature","comments":""},{"type":"void (*)(void *, void *)","name":"free_signature","comments":""},{"type":"int (*)(int *, void *, void *, void *)","name":"similarity","comments":""},{"type":"void *","name":"payload","comments":""}],"used":{"returns":[],"needs":[]}}],["git_diff_stats",{"decl":"git_diff_stats","type":"struct","value":"git_diff_stats","file":"diff.h","line":1229,"lineto":1229,"tdef":"typedef","description":" This is an opaque structure which is allocated by `git_diff_get_stats`.\n You are responsible for releasing the object memory when done, using the\n `git_diff_stats_free()` function.","comments":"","used":{"returns":[],"needs":["git_diff_get_stats","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf"]}}],["git_diff_stats_format_t",{"decl":["GIT_DIFF_STATS_NONE","GIT_DIFF_STATS_FULL","GIT_DIFF_STATS_SHORT","GIT_DIFF_STATS_NUMBER","GIT_DIFF_STATS_INCLUDE_SUMMARY"],"type":"enum","file":"diff.h","line":1234,"lineto":1249,"block":"GIT_DIFF_STATS_NONE\nGIT_DIFF_STATS_FULL\nGIT_DIFF_STATS_SHORT\nGIT_DIFF_STATS_NUMBER\nGIT_DIFF_STATS_INCLUDE_SUMMARY","tdef":"typedef","description":" Formatting options for diff stats","comments":"","fields":[{"type":"int","name":"GIT_DIFF_STATS_NONE","comments":"<p>No stats</p>\n","value":0},{"type":"int","name":"GIT_DIFF_STATS_FULL","comments":"<p>Full statistics, equivalent of <code>--stat</code> </p>\n","value":1},{"type":"int","name":"GIT_DIFF_STATS_SHORT","comments":"<p>Short statistics, equivalent of <code>--shortstat</code> </p>\n","value":2},{"type":"int","name":"GIT_DIFF_STATS_NUMBER","comments":"<p>Number statistics, equivalent of <code>--numstat</code> </p>\n","value":4},{"type":"int","name":"GIT_DIFF_STATS_INCLUDE_SUMMARY","comments":"<p>Extended header information such as creations, renames and mode changes, equivalent of <code>--summary</code> </p>\n","value":8}],"used":{"returns":[],"needs":["git_diff_stats_to_buf"]}}],["git_direction",{"decl":["GIT_DIRECTION_FETCH","GIT_DIRECTION_PUSH"],"type":"enum","file":"net.h","line":31,"lineto":34,"block":"GIT_DIRECTION_FETCH\nGIT_DIRECTION_PUSH","tdef":"typedef","description":" Direction of the connection.","comments":"<p>We need this because we need to know whether we should call git-upload-pack or git-receive-pack on the remote end when get_refs gets called.</p>\n","fields":[{"type":"int","name":"GIT_DIRECTION_FETCH","comments":"","value":0},{"type":"int","name":"GIT_DIRECTION_PUSH","comments":"","value":1}],"used":{"returns":["git_refspec_direction"],"needs":["git_remote_connect"]}}],["git_error",{"decl":["char * message","int klass"],"type":"struct","value":"git_error","file":"errors.h","line":64,"lineto":67,"block":"char * message\nint klass","tdef":"typedef","description":" Structure to store extra details of the last error that occurred.","comments":"<p>This is kept on a per-thread basis if GIT_THREADS was defined when the library was build, otherwise one is kept globally for the library</p>\n","fields":[{"type":"char *","name":"message","comments":""},{"type":"int","name":"klass","comments":""}],"used":{"returns":["giterr_last"],"needs":[]}}],["git_error_code",{"decl":["GIT_OK","GIT_ERROR","GIT_ENOTFOUND","GIT_EEXISTS","GIT_EAMBIGUOUS","GIT_EBUFS","GIT_EUSER","GIT_EBAREREPO","GIT_EUNBORNBRANCH","GIT_EUNMERGED","GIT_ENONFASTFORWARD","GIT_EINVALIDSPEC","GIT_ECONFLICT","GIT_ELOCKED","GIT_EMODIFIED","GIT_EAUTH","GIT_ECERTIFICATE","GIT_EAPPLIED","GIT_EPEEL","GIT_EEOF","GIT_EINVALID","GIT_EUNCOMMITTED","GIT_EDIRECTORY","GIT_EMERGECONFLICT","GIT_PASSTHROUGH","GIT_ITEROVER"],"type":"enum","file":"errors.h","line":21,"lineto":56,"block":"GIT_OK\nGIT_ERROR\nGIT_ENOTFOUND\nGIT_EEXISTS\nGIT_EAMBIGUOUS\nGIT_EBUFS\nGIT_EUSER\nGIT_EBAREREPO\nGIT_EUNBORNBRANCH\nGIT_EUNMERGED\nGIT_ENONFASTFORWARD\nGIT_EINVALIDSPEC\nGIT_ECONFLICT\nGIT_ELOCKED\nGIT_EMODIFIED\nGIT_EAUTH\nGIT_ECERTIFICATE\nGIT_EAPPLIED\nGIT_EPEEL\nGIT_EEOF\nGIT_EINVALID\nGIT_EUNCOMMITTED\nGIT_EDIRECTORY\nGIT_EMERGECONFLICT\nGIT_PASSTHROUGH\nGIT_ITEROVER","tdef":"typedef","description":" Generic return codes ","comments":"","fields":[{"type":"int","name":"GIT_OK","comments":"<p>No error </p>\n","value":0},{"type":"int","name":"GIT_ERROR","comments":"<p>Generic error </p>\n","value":-1},{"type":"int","name":"GIT_ENOTFOUND","comments":"<p>Requested object could not be found </p>\n","value":-3},{"type":"int","name":"GIT_EEXISTS","comments":"<p>Object exists preventing operation </p>\n","value":-4},{"type":"int","name":"GIT_EAMBIGUOUS","comments":"<p>More than one object matches </p>\n","value":-5},{"type":"int","name":"GIT_EBUFS","comments":"<p>Output buffer too short to hold data </p>\n","value":-6},{"type":"int","name":"GIT_EUSER","comments":"","value":-7},{"type":"int","name":"GIT_EBAREREPO","comments":"<p>Operation not allowed on bare repository </p>\n","value":-8},{"type":"int","name":"GIT_EUNBORNBRANCH","comments":"<p>HEAD refers to branch with no commits </p>\n","value":-9},{"type":"int","name":"GIT_EUNMERGED","comments":"<p>Merge in progress prevented operation </p>\n","value":-10},{"type":"int","name":"GIT_ENONFASTFORWARD","comments":"<p>Reference was not fast-forwardable </p>\n","value":-11},{"type":"int","name":"GIT_EINVALIDSPEC","comments":"<p>Name/ref spec was not in a valid format </p>\n","value":-12},{"type":"int","name":"GIT_ECONFLICT","comments":"<p>Checkout conflicts prevented operation </p>\n","value":-13},{"type":"int","name":"GIT_ELOCKED","comments":"<p>Lock file prevented operation </p>\n","value":-14},{"type":"int","name":"GIT_EMODIFIED","comments":"<p>Reference value does not match expected </p>\n","value":-15},{"type":"int","name":"GIT_EAUTH","comments":"<p>Authentication error </p>\n","value":-16},{"type":"int","name":"GIT_ECERTIFICATE","comments":"<p>Server certificate is invalid </p>\n","value":-17},{"type":"int","name":"GIT_EAPPLIED","comments":"<p>Patch/merge has already been applied </p>\n","value":-18},{"type":"int","name":"GIT_EPEEL","comments":"<p>The requested peel operation is not possible </p>\n","value":-19},{"type":"int","name":"GIT_EEOF","comments":"<p>Unexpected EOF </p>\n","value":-20},{"type":"int","name":"GIT_EINVALID","comments":"<p>Invalid operation or input </p>\n","value":-21},{"type":"int","name":"GIT_EUNCOMMITTED","comments":"<p>Uncommitted changes in index prevented operation </p>\n","value":-22},{"type":"int","name":"GIT_EDIRECTORY","comments":"<p>The operation is not valid for a directory </p>\n","value":-23},{"type":"int","name":"GIT_EMERGECONFLICT","comments":"<p>A merge conflict exists and cannot continue </p>\n","value":-24},{"type":"int","name":"GIT_PASSTHROUGH","comments":"<p>Internal only </p>\n","value":-30},{"type":"int","name":"GIT_ITEROVER","comments":"<p>Signals end of iteration with iterator </p>\n","value":-31}],"used":{"returns":[],"needs":[]}}],["git_error_t",{"decl":["GITERR_NONE","GITERR_NOMEMORY","GITERR_OS","GITERR_INVALID","GITERR_REFERENCE","GITERR_ZLIB","GITERR_REPOSITORY","GITERR_CONFIG","GITERR_REGEX","GITERR_ODB","GITERR_INDEX","GITERR_OBJECT","GITERR_NET","GITERR_TAG","GITERR_TREE","GITERR_INDEXER","GITERR_SSL","GITERR_SUBMODULE","GITERR_THREAD","GITERR_STASH","GITERR_CHECKOUT","GITERR_FETCHHEAD","GITERR_MERGE","GITERR_SSH","GITERR_FILTER","GITERR_REVERT","GITERR_CALLBACK","GITERR_CHERRYPICK","GITERR_DESCRIBE","GITERR_REBASE","GITERR_FILESYSTEM","GITERR_PATCH"],"type":"enum","file":"errors.h","line":70,"lineto":103,"block":"GITERR_NONE\nGITERR_NOMEMORY\nGITERR_OS\nGITERR_INVALID\nGITERR_REFERENCE\nGITERR_ZLIB\nGITERR_REPOSITORY\nGITERR_CONFIG\nGITERR_REGEX\nGITERR_ODB\nGITERR_INDEX\nGITERR_OBJECT\nGITERR_NET\nGITERR_TAG\nGITERR_TREE\nGITERR_INDEXER\nGITERR_SSL\nGITERR_SUBMODULE\nGITERR_THREAD\nGITERR_STASH\nGITERR_CHECKOUT\nGITERR_FETCHHEAD\nGITERR_MERGE\nGITERR_SSH\nGITERR_FILTER\nGITERR_REVERT\nGITERR_CALLBACK\nGITERR_CHERRYPICK\nGITERR_DESCRIBE\nGITERR_REBASE\nGITERR_FILESYSTEM\nGITERR_PATCH","tdef":"typedef","description":" Error classes ","comments":"","fields":[{"type":"int","name":"GITERR_NONE","comments":"","value":0},{"type":"int","name":"GITERR_NOMEMORY","comments":"","value":1},{"type":"int","name":"GITERR_OS","comments":"","value":2},{"type":"int","name":"GITERR_INVALID","comments":"","value":3},{"type":"int","name":"GITERR_REFERENCE","comments":"","value":4},{"type":"int","name":"GITERR_ZLIB","comments":"","value":5},{"type":"int","name":"GITERR_REPOSITORY","comments":"","value":6},{"type":"int","name":"GITERR_CONFIG","comments":"","value":7},{"type":"int","name":"GITERR_REGEX","comments":"","value":8},{"type":"int","name":"GITERR_ODB","comments":"","value":9},{"type":"int","name":"GITERR_INDEX","comments":"","value":10},{"type":"int","name":"GITERR_OBJECT","comments":"","value":11},{"type":"int","name":"GITERR_NET","comments":"","value":12},{"type":"int","name":"GITERR_TAG","comments":"","value":13},{"type":"int","name":"GITERR_TREE","comments":"","value":14},{"type":"int","name":"GITERR_INDEXER","comments":"","value":15},{"type":"int","name":"GITERR_SSL","comments":"","value":16},{"type":"int","name":"GITERR_SUBMODULE","comments":"","value":17},{"type":"int","name":"GITERR_THREAD","comments":"","value":18},{"type":"int","name":"GITERR_STASH","comments":"","value":19},{"type":"int","name":"GITERR_CHECKOUT","comments":"","value":20},{"type":"int","name":"GITERR_FETCHHEAD","comments":"","value":21},{"type":"int","name":"GITERR_MERGE","comments":"","value":22},{"type":"int","name":"GITERR_SSH","comments":"","value":23},{"type":"int","name":"GITERR_FILTER","comments":"","value":24},{"type":"int","name":"GITERR_REVERT","comments":"","value":25},{"type":"int","name":"GITERR_CALLBACK","comments":"","value":26},{"type":"int","name":"GITERR_CHERRYPICK","comments":"","value":27},{"type":"int","name":"GITERR_DESCRIBE","comments":"","value":28},{"type":"int","name":"GITERR_REBASE","comments":"","value":29},{"type":"int","name":"GITERR_FILESYSTEM","comments":"","value":30},{"type":"int","name":"GITERR_PATCH","comments":"","value":31}],"used":{"returns":[],"needs":[]}}],["git_feature_t",{"decl":["GIT_FEATURE_THREADS","GIT_FEATURE_HTTPS","GIT_FEATURE_SSH","GIT_FEATURE_NSEC"],"type":"enum","file":"common.h","line":111,"lineto":134,"block":"GIT_FEATURE_THREADS\nGIT_FEATURE_HTTPS\nGIT_FEATURE_SSH\nGIT_FEATURE_NSEC","tdef":"typedef","description":" Combinations of these values describe the features with which libgit2\n was compiled","comments":"","fields":[{"type":"int","name":"GIT_FEATURE_THREADS","comments":"<p>If set, libgit2 was built thread-aware and can be safely used from multiple\n threads.</p>\n","value":1},{"type":"int","name":"GIT_FEATURE_HTTPS","comments":"<p>If set, libgit2 was built with and linked against a TLS implementation.\n Custom TLS streams may still be added by the user to support HTTPS\n regardless of this.</p>\n","value":2},{"type":"int","name":"GIT_FEATURE_SSH","comments":"<p>If set, libgit2 was built with and linked against libssh2. A custom\n transport may still be added by the user to support libssh2 regardless of\n this.</p>\n","value":4},{"type":"int","name":"GIT_FEATURE_NSEC","comments":"<p>If set, libgit2 was built with support for sub-second resolution in file\n modification times.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_fetch_options",{"decl":["int version","git_remote_callbacks callbacks","git_fetch_prune_t prune","int update_fetchhead","git_remote_autotag_option_t download_tags","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_fetch_options","file":"remote.h","line":525,"lineto":562,"block":"int version\ngit_remote_callbacks callbacks\ngit_fetch_prune_t prune\nint update_fetchhead\ngit_remote_autotag_option_t download_tags\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Fetch options structure.","comments":"<p>Zero out for defaults.  Initialize with <code>GIT_FETCH_OPTIONS_INIT</code> macro to correctly set the <code>version</code> field.  E.g.</p>\n\n<pre><code>    git_fetch_options opts = GIT_FETCH_OPTIONS_INIT;\n</code></pre>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this fetch operation"},{"type":"git_fetch_prune_t","name":"prune","comments":" Whether to perform a prune after the fetch"},{"type":"int","name":"update_fetchhead","comments":" Whether to write the results to FETCH_HEAD. Defaults to\n on. Leave this default in order to behave like git."},{"type":"git_remote_autotag_option_t","name":"download_tags","comments":" Determines how to behave regarding tags on the remote, such\n as auto-downloading tags for objects we're downloading or\n downloading all of them.\n\n The default is to auto-follow tags."},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this fetch operation"}],"used":{"returns":[],"needs":["git_fetch_init_options","git_remote_download","git_remote_fetch"]}}],["git_filemode_t",{"decl":["GIT_FILEMODE_UNREADABLE","GIT_FILEMODE_TREE","GIT_FILEMODE_BLOB","GIT_FILEMODE_BLOB_EXECUTABLE","GIT_FILEMODE_LINK","GIT_FILEMODE_COMMIT"],"type":"enum","file":"types.h","line":205,"lineto":212,"block":"GIT_FILEMODE_UNREADABLE\nGIT_FILEMODE_TREE\nGIT_FILEMODE_BLOB\nGIT_FILEMODE_BLOB_EXECUTABLE\nGIT_FILEMODE_LINK\nGIT_FILEMODE_COMMIT","tdef":"typedef","description":" Valid modes for index and tree entries. ","comments":"","fields":[{"type":"int","name":"GIT_FILEMODE_UNREADABLE","comments":"","value":0},{"type":"int","name":"GIT_FILEMODE_TREE","comments":"","value":16384},{"type":"int","name":"GIT_FILEMODE_BLOB","comments":"","value":33188},{"type":"int","name":"GIT_FILEMODE_BLOB_EXECUTABLE","comments":"","value":33261},{"type":"int","name":"GIT_FILEMODE_LINK","comments":"","value":40960},{"type":"int","name":"GIT_FILEMODE_COMMIT","comments":"","value":57344}],"used":{"returns":["git_tree_entry_filemode","git_tree_entry_filemode_raw"],"needs":["git_treebuilder_insert"]}}],["git_filter",{"decl":["unsigned int version","const char * attributes","git_filter_init_fn initialize","git_filter_shutdown_fn shutdown","git_filter_check_fn check","git_filter_apply_fn apply","git_filter_stream_fn stream","git_filter_cleanup_fn cleanup"],"type":"struct","value":"git_filter","file":"sys/filter.h","line":226,"lineto":271,"tdef":null,"description":" Filter structure used to register custom filters.","comments":"<p>To associate extra data with a filter, allocate extra data and put the <code>git_filter</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","block":"unsigned int version\nconst char * attributes\ngit_filter_init_fn initialize\ngit_filter_shutdown_fn shutdown\ngit_filter_check_fn check\ngit_filter_apply_fn apply\ngit_filter_stream_fn stream\ngit_filter_cleanup_fn cleanup","fields":[{"type":"unsigned int","name":"version","comments":" The `version` field should be set to `GIT_FILTER_VERSION`. "},{"type":"const char *","name":"attributes","comments":" A whitespace-separated list of attribute names to check for this\n filter (e.g. \"eol crlf text\").  If the attribute name is bare, it\n will be simply loaded and passed to the `check` callback.  If it\n has a value (i.e. \"name=value\"), the attribute must match that\n value for the filter to be applied.  The value may be a wildcard\n (eg, \"name=*\"), in which case the filter will be invoked for any\n value for the given attribute name.  See the attribute parameter\n of the `check` callback for the attribute value that was specified."},{"type":"git_filter_init_fn","name":"initialize","comments":" Called when the filter is first used for any file. "},{"type":"git_filter_shutdown_fn","name":"shutdown","comments":" Called when the filter is removed or unregistered from the system. "},{"type":"git_filter_check_fn","name":"check","comments":" Called to determine whether the filter should be invoked for a\n given file.  If this function returns `GIT_PASSTHROUGH` then the\n `apply` function will not be invoked and the contents will be passed\n through unmodified."},{"type":"git_filter_apply_fn","name":"apply","comments":" Called to actually apply the filter to file contents.  If this\n function returns `GIT_PASSTHROUGH` then the contents will be passed\n through unmodified."},{"type":"git_filter_stream_fn","name":"stream","comments":" Called to apply the filter in a streaming manner.  If this is not\n specified then the system will call `apply` with the whole buffer."},{"type":"git_filter_cleanup_fn","name":"cleanup","comments":" Called when the system is done filtering for a file. "}],"used":{"returns":["git_filter_lookup","git_filter_source_mode"],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_cleanup_fn","git_filter_init_fn","git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_register","git_filter_shutdown_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_filter_flag_t",{"decl":["GIT_FILTER_DEFAULT","GIT_FILTER_ALLOW_UNSAFE"],"type":"enum","file":"filter.h","line":41,"lineto":44,"block":"GIT_FILTER_DEFAULT\nGIT_FILTER_ALLOW_UNSAFE","tdef":"typedef","description":" Filter option flags.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_FILTER_ALLOW_UNSAFE","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_filter_list",{"decl":"git_filter_list","type":"struct","value":"git_filter_list","file":"filter.h","line":73,"lineto":73,"tdef":"typedef","description":" List of filters to be applied","comments":"<p>This represents a list of filters to be applied to a file / blob.  You can build the list with one call, apply it with another, and dispose it with a third.  In typical usage, there are not many occasions where a git_filter_list is needed directly since the library will generally handle conversions for you, but it can be convenient to be able to build and apply the list sometimes.</p>\n","used":{"returns":[],"needs":["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}],["git_filter_mode_t",{"decl":["GIT_FILTER_TO_WORKTREE","GIT_FILTER_SMUDGE","GIT_FILTER_TO_ODB","GIT_FILTER_CLEAN"],"type":"enum","file":"filter.h","line":31,"lineto":36,"block":"GIT_FILTER_TO_WORKTREE\nGIT_FILTER_SMUDGE\nGIT_FILTER_TO_ODB\nGIT_FILTER_CLEAN","tdef":"typedef","description":" Filters are applied in one of two directions: smudging - which is\n exporting a file from the Git object database to the working directory,\n and cleaning - which is importing a file from the working directory to\n the Git object database.  These values control which direction of\n change is being applied.","comments":"","fields":[{"type":"int","name":"GIT_FILTER_TO_WORKTREE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_SMUDGE","comments":"","value":0},{"type":"int","name":"GIT_FILTER_TO_ODB","comments":"","value":1},{"type":"int","name":"GIT_FILTER_CLEAN","comments":"","value":1}],"used":{"returns":["git_filter_source_mode"],"needs":["git_filter_list_load","git_filter_list_new"]}}],["git_filter_source",{"decl":"git_filter_source","type":"struct","value":"git_filter_source","file":"sys/filter.h","line":95,"lineto":95,"tdef":"typedef","description":" A filter source represents a file/blob to be processed","comments":"","used":{"returns":[],"needs":["git_filter_apply_fn","git_filter_check_fn","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo"]}}],["git_hashsig",{"decl":"git_hashsig","type":"struct","value":"git_hashsig","file":"sys/hashsig.h","line":17,"lineto":17,"tdef":"typedef","description":" Similarity signature of arbitrary text content based on line hashes","comments":"","used":{"returns":[],"needs":["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]}}],["git_hashsig_option_t",{"decl":["GIT_HASHSIG_NORMAL","GIT_HASHSIG_IGNORE_WHITESPACE","GIT_HASHSIG_SMART_WHITESPACE","GIT_HASHSIG_ALLOW_SMALL_FILES"],"type":"enum","file":"sys/hashsig.h","line":25,"lineto":45,"block":"GIT_HASHSIG_NORMAL\nGIT_HASHSIG_IGNORE_WHITESPACE\nGIT_HASHSIG_SMART_WHITESPACE\nGIT_HASHSIG_ALLOW_SMALL_FILES","tdef":"typedef","description":" Options for hashsig computation","comments":"<p>The options GIT_HASHSIG_NORMAL, GIT_HASHSIG_IGNORE_WHITESPACE, GIT_HASHSIG_SMART_WHITESPACE are exclusive and should not be combined.</p>\n","fields":[{"type":"int","name":"GIT_HASHSIG_NORMAL","comments":"<p>Use all data</p>\n","value":0},{"type":"int","name":"GIT_HASHSIG_IGNORE_WHITESPACE","comments":"<p>Ignore whitespace</p>\n","value":1},{"type":"int","name":"GIT_HASHSIG_SMART_WHITESPACE","comments":"<p>Ignore </p>\n\n<p>and all space after </p>\n","value":2},{"type":"int","name":"GIT_HASHSIG_ALLOW_SMALL_FILES","comments":"<p>Allow hashing of small files</p>\n","value":4}],"used":{"returns":[],"needs":["git_hashsig_create","git_hashsig_create_fromfile"]}}],["git_idxentry_extended_flag_t",{"decl":["GIT_IDXENTRY_INTENT_TO_ADD","GIT_IDXENTRY_SKIP_WORKTREE","GIT_IDXENTRY_EXTENDED2","GIT_IDXENTRY_EXTENDED_FLAGS","GIT_IDXENTRY_UPDATE","GIT_IDXENTRY_REMOVE","GIT_IDXENTRY_UPTODATE","GIT_IDXENTRY_ADDED","GIT_IDXENTRY_HASHED","GIT_IDXENTRY_UNHASHED","GIT_IDXENTRY_WT_REMOVE","GIT_IDXENTRY_CONFLICTED","GIT_IDXENTRY_UNPACKED","GIT_IDXENTRY_NEW_SKIP_WORKTREE"],"type":"enum","file":"index.h","line":115,"lineto":135,"block":"GIT_IDXENTRY_INTENT_TO_ADD\nGIT_IDXENTRY_SKIP_WORKTREE\nGIT_IDXENTRY_EXTENDED2\nGIT_IDXENTRY_EXTENDED_FLAGS\nGIT_IDXENTRY_UPDATE\nGIT_IDXENTRY_REMOVE\nGIT_IDXENTRY_UPTODATE\nGIT_IDXENTRY_ADDED\nGIT_IDXENTRY_HASHED\nGIT_IDXENTRY_UNHASHED\nGIT_IDXENTRY_WT_REMOVE\nGIT_IDXENTRY_CONFLICTED\nGIT_IDXENTRY_UNPACKED\nGIT_IDXENTRY_NEW_SKIP_WORKTREE","tdef":"typedef","description":" Bitmasks for on-disk fields of `git_index_entry`'s `flags_extended`","comments":"<p>In memory, the <code>flags_extended</code> fields are divided into two parts: the fields that are read from and written to disk, and other fields that in-memory only and used by libgit2.  Only the flags in <code>GIT_IDXENTRY_EXTENDED_FLAGS</code> will get saved on-disk.</p>\n\n<p>Thee first three bitmasks match the three fields in the <code>git_index_entry</code> <code>flags_extended</code> value that belong on disk.  You can use them to interpret the data in the <code>flags_extended</code>.</p>\n\n<p>The rest of the bitmasks match the other fields in the <code>git_index_entry</code> <code>flags_extended</code> value that are only used in-memory by libgit2. You can use them to interpret the data in the <code>flags_extended</code>.</p>\n","fields":[{"type":"int","name":"GIT_IDXENTRY_INTENT_TO_ADD","comments":"","value":8192},{"type":"int","name":"GIT_IDXENTRY_SKIP_WORKTREE","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_EXTENDED2","comments":"<p>Reserved for future extension </p>\n","value":32768},{"type":"int","name":"GIT_IDXENTRY_EXTENDED_FLAGS","comments":"<p>Reserved for future extension </p>\n","value":24576},{"type":"int","name":"GIT_IDXENTRY_UPDATE","comments":"<p>Reserved for future extension </p>\n","value":1},{"type":"int","name":"GIT_IDXENTRY_REMOVE","comments":"<p>Reserved for future extension </p>\n","value":2},{"type":"int","name":"GIT_IDXENTRY_UPTODATE","comments":"<p>Reserved for future extension </p>\n","value":4},{"type":"int","name":"GIT_IDXENTRY_ADDED","comments":"<p>Reserved for future extension </p>\n","value":8},{"type":"int","name":"GIT_IDXENTRY_HASHED","comments":"<p>Reserved for future extension </p>\n","value":16},{"type":"int","name":"GIT_IDXENTRY_UNHASHED","comments":"<p>Reserved for future extension </p>\n","value":32},{"type":"int","name":"GIT_IDXENTRY_WT_REMOVE","comments":"<p>remove in work directory </p>\n","value":64},{"type":"int","name":"GIT_IDXENTRY_CONFLICTED","comments":"","value":128},{"type":"int","name":"GIT_IDXENTRY_UNPACKED","comments":"","value":256},{"type":"int","name":"GIT_IDXENTRY_NEW_SKIP_WORKTREE","comments":"","value":512}],"used":{"returns":[],"needs":[]}}],["git_index",{"decl":"git_index","type":"struct","value":"git_index","file":"types.h","line":132,"lineto":132,"tdef":"typedef","description":" Memory representation of an index file. ","comments":"","used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_checkout_index","git_cherrypick_commit","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to","git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_pathspec_match_index","git_rebase_inmemory_index","git_repository_index","git_repository_set_index","git_revert_commit"]}}],["git_index_add_option_t",{"decl":["GIT_INDEX_ADD_DEFAULT","GIT_INDEX_ADD_FORCE","GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","GIT_INDEX_ADD_CHECK_PATHSPEC"],"type":"enum","file":"index.h","line":150,"lineto":155,"block":"GIT_INDEX_ADD_DEFAULT\nGIT_INDEX_ADD_FORCE\nGIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH\nGIT_INDEX_ADD_CHECK_PATHSPEC","tdef":"typedef","description":" Flags for APIs that add files matching pathspec ","comments":"","fields":[{"type":"int","name":"GIT_INDEX_ADD_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_INDEX_ADD_FORCE","comments":"","value":1},{"type":"int","name":"GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH","comments":"","value":2},{"type":"int","name":"GIT_INDEX_ADD_CHECK_PATHSPEC","comments":"","value":4}],"used":{"returns":[],"needs":[]}}],["git_index_conflict_iterator",{"decl":"git_index_conflict_iterator","type":"struct","value":"git_index_conflict_iterator","file":"types.h","line":135,"lineto":135,"tdef":"typedef","description":" An iterator for conflicts in the index. ","comments":"","used":{"returns":[],"needs":["git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next"]}}],["git_index_entry",{"decl":["git_index_time ctime","git_index_time mtime","uint32_t dev","uint32_t ino","uint32_t mode","uint32_t uid","uint32_t gid","uint32_t file_size","git_oid id","uint16_t flags","uint16_t flags_extended","const char * path"],"type":"struct","value":"git_index_entry","file":"index.h","line":53,"lineto":70,"block":"git_index_time ctime\ngit_index_time mtime\nuint32_t dev\nuint32_t ino\nuint32_t mode\nuint32_t uid\nuint32_t gid\nuint32_t file_size\ngit_oid id\nuint16_t flags\nuint16_t flags_extended\nconst char * path","tdef":"typedef","description":" In-memory representation of a file entry in the index.","comments":"<p>This is a public structure that represents a file entry in the index. The meaning of the fields corresponds to core Git&#39;s documentation (in &quot;Documentation/technical/index-format.txt&quot;).</p>\n\n<p>The <code>flags</code> field consists of a number of bit fields which can be accessed via the first set of <code>GIT_IDXENTRY_...</code> bitmasks below.  These flags are all read from and persisted to disk.</p>\n\n<p>The <code>flags_extended</code> field also has a number of bit fields which can be accessed via the later <code>GIT_IDXENTRY_...</code> bitmasks below.  Some of these flags are read from and written to disk, but some are set aside for in-memory only reference.</p>\n\n<p>Note that the time and size fields are truncated to 32 bits. This is enough to detect changes, which is enough for the index to function as a cache, but it should not be taken as an authoritative source for that data.</p>\n","fields":[{"type":"git_index_time","name":"ctime","comments":""},{"type":"git_index_time","name":"mtime","comments":""},{"type":"uint32_t","name":"dev","comments":""},{"type":"uint32_t","name":"ino","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"uint32_t","name":"uid","comments":""},{"type":"uint32_t","name":"gid","comments":""},{"type":"uint32_t","name":"file_size","comments":""},{"type":"git_oid","name":"id","comments":""},{"type":"uint16_t","name":"flags","comments":""},{"type":"uint16_t","name":"flags_extended","comments":""},{"type":"const char *","name":"path","comments":""}],"used":{"returns":["git_index_get_byindex","git_index_get_bypath"],"needs":["git_index_add","git_index_add_frombuffer","git_index_conflict_add","git_index_conflict_get","git_index_conflict_next","git_index_entry_is_conflict","git_index_entry_stage","git_merge_file_from_index"]}}],["git_index_time",{"decl":["int32_t seconds","uint32_t nanoseconds"],"type":"struct","value":"git_index_time","file":"index.h","line":26,"lineto":30,"block":"int32_t seconds\nuint32_t nanoseconds","tdef":"typedef","description":" Time structure used in a git index entry ","comments":"","fields":[{"type":"int32_t","name":"seconds","comments":""},{"type":"uint32_t","name":"nanoseconds","comments":""}],"used":{"returns":[],"needs":[]}}],["git_indexcap_t",{"decl":["GIT_INDEXCAP_IGNORE_CASE","GIT_INDEXCAP_NO_FILEMODE","GIT_INDEXCAP_NO_SYMLINKS","GIT_INDEXCAP_FROM_OWNER"],"type":"enum","file":"index.h","line":138,"lineto":143,"block":"GIT_INDEXCAP_IGNORE_CASE\nGIT_INDEXCAP_NO_FILEMODE\nGIT_INDEXCAP_NO_SYMLINKS\nGIT_INDEXCAP_FROM_OWNER","tdef":"typedef","description":" Capabilities of system that affect index actions. ","comments":"","fields":[{"type":"int","name":"GIT_INDEXCAP_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_INDEXCAP_NO_FILEMODE","comments":"","value":2},{"type":"int","name":"GIT_INDEXCAP_NO_SYMLINKS","comments":"","value":4},{"type":"int","name":"GIT_INDEXCAP_FROM_OWNER","comments":"","value":-1}],"used":{"returns":[],"needs":[]}}],["git_indxentry_flag_t",{"decl":["GIT_IDXENTRY_EXTENDED","GIT_IDXENTRY_VALID"],"type":"enum","file":"index.h","line":86,"lineto":89,"block":"GIT_IDXENTRY_EXTENDED\nGIT_IDXENTRY_VALID","tdef":"typedef","description":" Flags for index entries","comments":"","fields":[{"type":"int","name":"GIT_IDXENTRY_EXTENDED","comments":"","value":16384},{"type":"int","name":"GIT_IDXENTRY_VALID","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_libgit2_opt_t",{"decl":["GIT_OPT_GET_MWINDOW_SIZE","GIT_OPT_SET_MWINDOW_SIZE","GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","GIT_OPT_GET_SEARCH_PATH","GIT_OPT_SET_SEARCH_PATH","GIT_OPT_SET_CACHE_OBJECT_LIMIT","GIT_OPT_SET_CACHE_MAX_SIZE","GIT_OPT_ENABLE_CACHING","GIT_OPT_GET_CACHED_MEMORY","GIT_OPT_GET_TEMPLATE_PATH","GIT_OPT_SET_TEMPLATE_PATH","GIT_OPT_SET_SSL_CERT_LOCATIONS","GIT_OPT_SET_USER_AGENT","GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","GIT_OPT_SET_SSL_CIPHERS","GIT_OPT_GET_USER_AGENT"],"type":"enum","file":"common.h","line":162,"lineto":180,"block":"GIT_OPT_GET_MWINDOW_SIZE\nGIT_OPT_SET_MWINDOW_SIZE\nGIT_OPT_GET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_SET_MWINDOW_MAPPED_LIMIT\nGIT_OPT_GET_SEARCH_PATH\nGIT_OPT_SET_SEARCH_PATH\nGIT_OPT_SET_CACHE_OBJECT_LIMIT\nGIT_OPT_SET_CACHE_MAX_SIZE\nGIT_OPT_ENABLE_CACHING\nGIT_OPT_GET_CACHED_MEMORY\nGIT_OPT_GET_TEMPLATE_PATH\nGIT_OPT_SET_TEMPLATE_PATH\nGIT_OPT_SET_SSL_CERT_LOCATIONS\nGIT_OPT_SET_USER_AGENT\nGIT_OPT_ENABLE_STRICT_OBJECT_CREATION\nGIT_OPT_SET_SSL_CIPHERS\nGIT_OPT_GET_USER_AGENT","tdef":"typedef","description":" Global library options","comments":"<p>These are used to select which global option to set or get and are used in <code>git_libgit2_opts()</code>.</p>\n","fields":[{"type":"int","name":"GIT_OPT_GET_MWINDOW_SIZE","comments":"","value":0},{"type":"int","name":"GIT_OPT_SET_MWINDOW_SIZE","comments":"","value":1},{"type":"int","name":"GIT_OPT_GET_MWINDOW_MAPPED_LIMIT","comments":"","value":2},{"type":"int","name":"GIT_OPT_SET_MWINDOW_MAPPED_LIMIT","comments":"","value":3},{"type":"int","name":"GIT_OPT_GET_SEARCH_PATH","comments":"","value":4},{"type":"int","name":"GIT_OPT_SET_SEARCH_PATH","comments":"","value":5},{"type":"int","name":"GIT_OPT_SET_CACHE_OBJECT_LIMIT","comments":"","value":6},{"type":"int","name":"GIT_OPT_SET_CACHE_MAX_SIZE","comments":"","value":7},{"type":"int","name":"GIT_OPT_ENABLE_CACHING","comments":"","value":8},{"type":"int","name":"GIT_OPT_GET_CACHED_MEMORY","comments":"","value":9},{"type":"int","name":"GIT_OPT_GET_TEMPLATE_PATH","comments":"","value":10},{"type":"int","name":"GIT_OPT_SET_TEMPLATE_PATH","comments":"","value":11},{"type":"int","name":"GIT_OPT_SET_SSL_CERT_LOCATIONS","comments":"","value":12},{"type":"int","name":"GIT_OPT_SET_USER_AGENT","comments":"","value":13},{"type":"int","name":"GIT_OPT_ENABLE_STRICT_OBJECT_CREATION","comments":"","value":14},{"type":"int","name":"GIT_OPT_SET_SSL_CIPHERS","comments":"","value":15},{"type":"int","name":"GIT_OPT_GET_USER_AGENT","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_merge_analysis_t",{"decl":["GIT_MERGE_ANALYSIS_NONE","GIT_MERGE_ANALYSIS_NORMAL","GIT_MERGE_ANALYSIS_UP_TO_DATE","GIT_MERGE_ANALYSIS_FASTFORWARD","GIT_MERGE_ANALYSIS_UNBORN"],"type":"enum","file":"merge.h","line":311,"lineto":340,"block":"GIT_MERGE_ANALYSIS_NONE\nGIT_MERGE_ANALYSIS_NORMAL\nGIT_MERGE_ANALYSIS_UP_TO_DATE\nGIT_MERGE_ANALYSIS_FASTFORWARD\nGIT_MERGE_ANALYSIS_UNBORN","tdef":"typedef","description":" The results of `git_merge_analysis` indicate the merge opportunities.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_ANALYSIS_NONE","comments":"<p>No merge is possible.  (Unused.) </p>\n","value":0},{"type":"int","name":"GIT_MERGE_ANALYSIS_NORMAL","comments":"<p>A &quot;normal&quot; merge; both HEAD and the given merge input have diverged\n from their common ancestor.  The divergent commits must be merged.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_ANALYSIS_UP_TO_DATE","comments":"<p>All given merge inputs are reachable from HEAD, meaning the\n repository is up-to-date and no merge needs to be performed.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_ANALYSIS_FASTFORWARD","comments":"<p>The given merge input is a fast-forward from HEAD and no merge\n needs to be performed.  Instead, the client can check out the\n given merge input.</p>\n","value":4},{"type":"int","name":"GIT_MERGE_ANALYSIS_UNBORN","comments":"<p>The HEAD of the current repository is &quot;unborn&quot; and does not point to\n a valid commit.  No merge can be performed, but the caller may wish\n to simply set HEAD to the target commit(s).</p>\n","value":8}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_driver",{"decl":["unsigned int version","git_merge_driver_init_fn initialize","git_merge_driver_shutdown_fn shutdown","git_merge_driver_apply_fn apply"],"type":"struct","value":"git_merge_driver","file":"sys/merge.h","line":118,"lineto":135,"block":"unsigned int version\ngit_merge_driver_init_fn initialize\ngit_merge_driver_shutdown_fn shutdown\ngit_merge_driver_apply_fn apply","tdef":null,"description":" Merge driver structure used to register custom merge drivers.","comments":"<p>To associate extra data with a driver, allocate extra data and put the <code>git_merge_driver</code> struct at the start of your data buffer, then cast the <code>self</code> pointer to your larger structure when your callback is invoked.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":" The `version` should be set to `GIT_MERGE_DRIVER_VERSION`. "},{"type":"git_merge_driver_init_fn","name":"initialize","comments":" Called when the merge driver is first used for any file. "},{"type":"git_merge_driver_shutdown_fn","name":"shutdown","comments":" Called when the merge driver is unregistered from the system. "},{"type":"git_merge_driver_apply_fn","name":"apply","comments":" Called to merge the contents of a conflict.  If this function\n returns `GIT_PASSTHROUGH` then the default (`text`) merge driver\n will instead be invoked.  If this function returns\n `GIT_EMERGECONFLICT` then the file will remain conflicted."}],"used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_driver_source",{"decl":"git_merge_driver_source","type":"struct","value":"git_merge_driver_source","file":"sys/merge.h","line":36,"lineto":36,"tdef":"typedef","description":" A merge driver source represents the file to be merged","comments":"","used":{"returns":[],"needs":["git_merge_driver_apply_fn"]}}],["git_merge_file_favor_t",{"decl":["GIT_MERGE_FILE_FAVOR_NORMAL","GIT_MERGE_FILE_FAVOR_OURS","GIT_MERGE_FILE_FAVOR_THEIRS","GIT_MERGE_FILE_FAVOR_UNION"],"type":"enum","file":"merge.h","line":101,"lineto":131,"block":"GIT_MERGE_FILE_FAVOR_NORMAL\nGIT_MERGE_FILE_FAVOR_OURS\nGIT_MERGE_FILE_FAVOR_THEIRS\nGIT_MERGE_FILE_FAVOR_UNION","tdef":"typedef","description":" Merge file favor options for `git_merge_options` instruct the file-level\n merging functionality how to deal with conflicting regions of the files.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_FAVOR_NORMAL","comments":"<p>When a region of a file is changed in both branches, a conflict\n will be recorded in the index so that <code>git_checkout</code> can produce\n a merge file with conflict markers in the working directory.\n This is the default.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_OURS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;ours&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_THEIRS","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain the &quot;theirs&quot; side of any conflicting\n region.  The index will not record a conflict.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_FAVOR_UNION","comments":"<p>When a region of a file is changed in both branches, the file\n created in the index will contain each unique line from each side,\n which has the result of combining both files.  The index will not\n record a conflict.</p>\n","value":3}],"used":{"returns":[],"needs":[]}}],["git_merge_file_flag_t",{"decl":["GIT_MERGE_FILE_DEFAULT","GIT_MERGE_FILE_STYLE_MERGE","GIT_MERGE_FILE_STYLE_DIFF3","GIT_MERGE_FILE_SIMPLIFY_ALNUM","GIT_MERGE_FILE_IGNORE_WHITESPACE","GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","GIT_MERGE_FILE_DIFF_PATIENCE","GIT_MERGE_FILE_DIFF_MINIMAL"],"type":"enum","file":"merge.h","line":136,"lineto":163,"block":"GIT_MERGE_FILE_DEFAULT\nGIT_MERGE_FILE_STYLE_MERGE\nGIT_MERGE_FILE_STYLE_DIFF3\nGIT_MERGE_FILE_SIMPLIFY_ALNUM\nGIT_MERGE_FILE_IGNORE_WHITESPACE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE\nGIT_MERGE_FILE_IGNORE_WHITESPACE_EOL\nGIT_MERGE_FILE_DIFF_PATIENCE\nGIT_MERGE_FILE_DIFF_MINIMAL","tdef":"typedef","description":" File merging flags","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FILE_DEFAULT","comments":"<p>Defaults </p>\n","value":0},{"type":"int","name":"GIT_MERGE_FILE_STYLE_MERGE","comments":"<p>Create standard conflicted merge files </p>\n","value":1},{"type":"int","name":"GIT_MERGE_FILE_STYLE_DIFF3","comments":"<p>Create diff3-style files </p>\n","value":2},{"type":"int","name":"GIT_MERGE_FILE_SIMPLIFY_ALNUM","comments":"<p>Condense non-alphanumeric regions for simplified diff file </p>\n","value":4},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE","comments":"<p>Ignore all whitespace </p>\n","value":8},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE","comments":"<p>Ignore changes in amount of whitespace </p>\n","value":16},{"type":"int","name":"GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL","comments":"<p>Ignore whitespace at end of line </p>\n","value":32},{"type":"int","name":"GIT_MERGE_FILE_DIFF_PATIENCE","comments":"<p>Use the &quot;patience diff&quot; algorithm </p>\n","value":64},{"type":"int","name":"GIT_MERGE_FILE_DIFF_MINIMAL","comments":"<p>Take extra time to find minimal diff </p>\n","value":128}],"used":{"returns":[],"needs":[]}}],["git_merge_file_input",{"decl":["unsigned int version","const char * ptr","size_t size","const char * path","unsigned int mode"],"type":"struct","value":"git_merge_file_input","file":"merge.h","line":32,"lineto":46,"block":"unsigned int version\nconst char * ptr\nsize_t size\nconst char * path\nunsigned int mode","tdef":"typedef","description":" The file inputs to `git_merge_file`.  Callers should populate the\n `git_merge_file_input` structure with descriptions of the files in\n each side of the conflict for use in producing the merge file.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ptr","comments":" Pointer to the contents of the file. "},{"type":"size_t","name":"size","comments":" Size of the contents pointed to in `ptr`. "},{"type":"const char *","name":"path","comments":" File name of the conflicted file, or `NULL` to not merge the path. "},{"type":"unsigned int","name":"mode","comments":" File mode of the conflicted file, or `0` to not merge the mode. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_init_input"]}}],["git_merge_file_options",{"decl":["unsigned int version","const char * ancestor_label","const char * our_label","const char * their_label","git_merge_file_favor_t favor","git_merge_file_flag_t flags"],"type":"struct","value":"git_merge_file_options","file":"merge.h","line":168,"lineto":194,"block":"unsigned int version\nconst char * ancestor_label\nconst char * our_label\nconst char * their_label\ngit_merge_file_favor_t favor\ngit_merge_file_flag_t flags","tdef":"typedef","description":" Options for merging a file","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"const char *","name":"ancestor_label","comments":" Label for the ancestor file side of the conflict which will be prepended\n to labels in diff3-format merge files."},{"type":"const char *","name":"our_label","comments":" Label for our file side of the conflict which will be prepended\n to labels in merge files."},{"type":"const char *","name":"their_label","comments":" Label for their file side of the conflict which will be prepended\n to labels in merge files."},{"type":"git_merge_file_favor_t","name":"favor","comments":" The file to favor in region conflicts. "},{"type":"git_merge_file_flag_t","name":"flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_init_options"]}}],["git_merge_file_result",{"decl":["unsigned int automergeable","const char * path","unsigned int mode","const char * ptr","size_t len"],"type":"struct","value":"git_merge_file_result","file":"merge.h","line":215,"lineto":236,"block":"unsigned int automergeable\nconst char * path\nunsigned int mode\nconst char * ptr\nsize_t len","tdef":"typedef","description":" Information about file-level merging","comments":"","fields":[{"type":"unsigned int","name":"automergeable","comments":" True if the output was automerged, false if the output contains\n conflict markers."},{"type":"const char *","name":"path","comments":" The path that the resultant merge file should use, or NULL if a\n filename conflict would occur."},{"type":"unsigned int","name":"mode","comments":" The mode that the resultant merge file should use.  "},{"type":"const char *","name":"ptr","comments":" The contents of the merge. "},{"type":"size_t","name":"len","comments":" The length of the merge contents. "}],"used":{"returns":[],"needs":["git_merge_file","git_merge_file_from_index","git_merge_file_result_free"]}}],["git_merge_flag_t",{"decl":["GIT_MERGE_FIND_RENAMES","GIT_MERGE_FAIL_ON_CONFLICT","GIT_MERGE_SKIP_REUC","GIT_MERGE_NO_RECURSIVE"],"type":"enum","file":"merge.h","line":68,"lineto":95,"block":"GIT_MERGE_FIND_RENAMES\nGIT_MERGE_FAIL_ON_CONFLICT\nGIT_MERGE_SKIP_REUC\nGIT_MERGE_NO_RECURSIVE","tdef":"typedef","description":" Flags for `git_merge` options.  A combination of these flags can be\n passed in via the `flags` value in the `git_merge_options`.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_FIND_RENAMES","comments":"<p>Detect renames that occur between the common ancestor and the &quot;ours&quot;\n side or the common ancestor and the &quot;theirs&quot; side.  This will enable\n the ability to merge between a modified and renamed file.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_FAIL_ON_CONFLICT","comments":"<p>If a conflict occurs, exit immediately instead of attempting to\n continue resolving conflicts.  The merge operation will fail with\n GIT_EMERGECONFLICT and no index will be returned.</p>\n","value":2},{"type":"int","name":"GIT_MERGE_SKIP_REUC","comments":"<p>Do not write the REUC extension on the generated index</p>\n","value":4},{"type":"int","name":"GIT_MERGE_NO_RECURSIVE","comments":"<p>If the commits being merged have multiple merge bases, do not build\n a recursive merge base (by merging the multiple merge bases),\n instead simply use the first base.  This flag provides a similar\n merge base to <code>git-merge-resolve</code>.</p>\n","value":8}],"used":{"returns":[],"needs":[]}}],["git_merge_options",{"decl":["unsigned int version","git_merge_flag_t flags","unsigned int rename_threshold","unsigned int target_limit","git_diff_similarity_metric * metric","unsigned int recursion_limit","const char * default_driver","git_merge_file_favor_t file_favor","git_merge_file_flag_t file_flags"],"type":"struct","value":"git_merge_options","file":"merge.h","line":241,"lineto":290,"block":"unsigned int version\ngit_merge_flag_t flags\nunsigned int rename_threshold\nunsigned int target_limit\ngit_diff_similarity_metric * metric\nunsigned int recursion_limit\nconst char * default_driver\ngit_merge_file_favor_t file_favor\ngit_merge_file_flag_t file_flags","tdef":"typedef","description":" Merging options","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_merge_flag_t","name":"flags","comments":" See `git_merge_flag_t` above "},{"type":"unsigned int","name":"rename_threshold","comments":" Similarity to consider a file renamed (default 50).  If\n `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared\n with deleted files to determine their similarity.  Files that are\n more similar than the rename threshold (percentage-wise) will be\n treated as a rename."},{"type":"unsigned int","name":"target_limit","comments":" Maximum similarity sources to examine for renames (default 200).\n If the number of rename candidates (add / delete pairs) is greater\n than this value, inexact rename detection is aborted.\n\n This setting overrides the `merge.renameLimit` configuration value."},{"type":"git_diff_similarity_metric *","name":"metric","comments":" Pluggable similarity metric; pass NULL to use internal metric "},{"type":"unsigned int","name":"recursion_limit","comments":" Maximum number of times to merge common ancestors to build a\n virtual merge base when faced with criss-cross merges.  When this\n limit is reached, the next ancestor will simply be used instead of\n attempting to merge it.  The default is unlimited."},{"type":"const char *","name":"default_driver","comments":" Default merge driver to be used when both sides of a merge have\n changed.  The default is the `text` driver."},{"type":"git_merge_file_favor_t","name":"file_favor","comments":" Flags for handling conflicting content, to be used with the standard\n (`text`) merge driver."},{"type":"git_merge_file_flag_t","name":"file_flags","comments":" see `git_merge_file_flag_t` above "}],"used":{"returns":[],"needs":["git_cherrypick_commit","git_merge","git_merge_commits","git_merge_init_options","git_merge_trees","git_revert_commit"]}}],["git_merge_preference_t",{"decl":["GIT_MERGE_PREFERENCE_NONE","GIT_MERGE_PREFERENCE_NO_FASTFORWARD","GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY"],"type":"enum","file":"merge.h","line":345,"lineto":363,"block":"GIT_MERGE_PREFERENCE_NONE\nGIT_MERGE_PREFERENCE_NO_FASTFORWARD\nGIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","tdef":"typedef","description":" The user's stated preference for merges.","comments":"","fields":[{"type":"int","name":"GIT_MERGE_PREFERENCE_NONE","comments":"<p>No configuration was found that suggests a preferred behavior for\n merge.</p>\n","value":0},{"type":"int","name":"GIT_MERGE_PREFERENCE_NO_FASTFORWARD","comments":"<p>There is a <code>merge.ff=false</code> configuration setting, suggesting that\n the user does not want to allow a fast-forward merge.</p>\n","value":1},{"type":"int","name":"GIT_MERGE_PREFERENCE_FASTFORWARD_ONLY","comments":"<p>There is a <code>merge.ff=only</code> configuration setting, suggesting that\n the user only wants fast-forward merges.</p>\n","value":2}],"used":{"returns":[],"needs":["git_merge_analysis"]}}],["git_merge_result",{"decl":"git_merge_result","type":"struct","value":"git_merge_result","file":"types.h","line":181,"lineto":181,"tdef":"typedef","description":" Merge result ","comments":"","used":{"returns":[],"needs":[]}}],["git_note",{"decl":"git_note","type":"struct","value":"git_note","file":"types.h","line":150,"lineto":150,"tdef":"typedef","description":" Representation of a git note ","comments":"","used":{"returns":[],"needs":["git_note_author","git_note_committer","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read"]}}],["git_note_iterator",{"decl":"git_note_iterator","type":"struct","value":"git_note_iterator","file":"notes.h","line":35,"lineto":35,"tdef":"typedef","description":" note iterator","comments":"","used":{"returns":[],"needs":["git_note_iterator_free","git_note_iterator_new","git_note_next"]}}],["git_object",{"decl":"git_object","type":"struct","value":"git_object","file":"types.h","line":108,"lineto":108,"tdef":"typedef","description":" Representation of a generic object in a repository ","comments":"","used":{"returns":[],"needs":["git_checkout_tree","git_describe_commit","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_type","git_reference_peel","git_reset","git_reset_default","git_revparse_ext","git_revparse_single","git_tag_annotation_create","git_tag_create","git_tag_create_lightweight","git_tag_peel","git_tag_target","git_tree_entry_to_object"]}}],["git_odb",{"decl":"git_odb","type":"struct","value":"git_odb","file":"types.h","line":81,"lineto":81,"tdef":"typedef","description":" An open object database handle. ","comments":"","used":{"returns":[],"needs":["git_indexer_new","git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack","git_repository_odb","git_repository_set_odb","git_repository_wrap_odb"]}}],["git_odb_backend",{"decl":"git_odb_backend","type":"struct","value":"git_odb_backend","file":"types.h","line":84,"lineto":84,"block":"unsigned int version\ngit_odb * odb\nint (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *) read\nint (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t) read_prefix\nint (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *) read_header\nint (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype) write\nint (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype) writestream\nint (*)(git_odb_stream **, git_odb_backend *, const git_oid *) readstream\nint (*)(git_odb_backend *, const git_oid *) exists\nint (*)(git_oid *, git_odb_backend *, const git_oid *, size_t) exists_prefix\nint (*)(git_odb_backend *) refresh\nint (*)(git_odb_backend *, git_odb_foreach_cb, void *) foreach\nint (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *) writepack\nint (*)(git_odb_backend *, const git_oid *) freshen\nvoid (*)(git_odb_backend *) free","tdef":"typedef","description":" A custom backend in an ODB ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_odb *","name":"odb","comments":""},{"type":"int (*)(void **, size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read","comments":""},{"type":"int (*)(git_oid *, void **, size_t *, git_otype *, git_odb_backend *, const git_oid *, size_t)","name":"read_prefix","comments":""},{"type":"int (*)(size_t *, git_otype *, git_odb_backend *, const git_oid *)","name":"read_header","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *, const void *, size_t, git_otype)","name":"write","comments":" Write an object into the backend. The id of the object has\n already been calculated and is passed in."},{"type":"int (*)(git_odb_stream **, git_odb_backend *, git_off_t, git_otype)","name":"writestream","comments":""},{"type":"int (*)(git_odb_stream **, git_odb_backend *, const git_oid *)","name":"readstream","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"exists","comments":""},{"type":"int (*)(git_oid *, git_odb_backend *, const git_oid *, size_t)","name":"exists_prefix","comments":""},{"type":"int (*)(git_odb_backend *)","name":"refresh","comments":" If the backend implements a refreshing mechanism, it should be exposed\n through this endpoint. Each call to `git_odb_refresh()` will invoke it.\n\n However, the backend implementation should try to stay up-to-date as much\n as possible by itself as libgit2 will not automatically invoke\n `git_odb_refresh()`. For instance, a potential strategy for the backend\n implementation to achieve this could be to internally invoke this\n endpoint on failed lookups (ie. `exists()`, `read()`, `read_header()`)."},{"type":"int (*)(git_odb_backend *, git_odb_foreach_cb, void *)","name":"foreach","comments":""},{"type":"int (*)(git_odb_writepack **, git_odb_backend *, git_odb *, git_transfer_progress_cb, void *)","name":"writepack","comments":""},{"type":"int (*)(git_odb_backend *, const git_oid *)","name":"freshen","comments":" \"Freshens\" an already existing object, updating its last-used\n time.  This occurs when `git_odb_write` was called, but the\n object already existed (and will not be re-written).  The\n underlying implementation may want to update last-used timestamps.\n\n If callers implement this, they should return `0` if the object\n exists and was freshened, and non-zero otherwise."},{"type":"void (*)(git_odb_backend *)","name":"free","comments":" Frees any resources held by the odb (including the `git_odb_backend`\n itself). An odb backend implementation must provide this function."}],"used":{"returns":[],"needs":["git_mempack_new","git_mempack_reset","git_odb_add_alternate","git_odb_add_backend","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_get_backend","git_odb_init_backend"]}}],["git_odb_expand_id",{"decl":["git_oid id","unsigned short length","git_otype type"],"type":"struct","value":"git_odb_expand_id","file":"odb.h","line":180,"lineto":195,"block":"git_oid id\nunsigned short length\ngit_otype type","tdef":"typedef","description":" The information about object IDs to query in `git_odb_expand_ids`,\n which will be populated upon return.","comments":"","fields":[{"type":"git_oid","name":"id","comments":" The object ID to expand "},{"type":"unsigned short","name":"length","comments":" The length of the object ID (in nibbles, or packets of 4 bits; the\n number of hex characters)"},{"type":"git_otype","name":"type","comments":" The (optional) type of the object to search for; leave as `0` or set\n to `GIT_OBJ_ANY` to query for any object matching the ID."}],"used":{"returns":[],"needs":["git_odb_expand_ids"]}}],["git_odb_object",{"decl":"git_odb_object","type":"struct","value":"git_odb_object","file":"types.h","line":87,"lineto":87,"tdef":"typedef","description":" An object read from the ODB ","comments":"","used":{"returns":[],"needs":["git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_read","git_odb_read_prefix"]}}],["git_odb_stream",{"decl":"git_odb_stream","type":"struct","value":"git_odb_stream","file":"types.h","line":90,"lineto":90,"block":"git_odb_backend * backend\nunsigned int mode\nvoid * hash_ctx\ngit_off_t declared_size\ngit_off_t received_bytes\nint (*)(git_odb_stream *, char *, size_t) read\nint (*)(git_odb_stream *, const char *, size_t) write\nint (*)(git_odb_stream *, const int *) finalize_write\nvoid (*)(git_odb_stream *) free","tdef":"typedef","description":" A stream to read/write from the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"unsigned int","name":"mode","comments":""},{"type":"void *","name":"hash_ctx","comments":""},{"type":"git_off_t","name":"declared_size","comments":""},{"type":"git_off_t","name":"received_bytes","comments":""},{"type":"int (*)(git_odb_stream *, char *, size_t)","name":"read","comments":" Write at most `len` bytes into `buffer` and advance the stream."},{"type":"int (*)(git_odb_stream *, const char *, size_t)","name":"write","comments":" Write `len` bytes from `buffer` into the stream."},{"type":"int (*)(git_odb_stream *, const int *)","name":"finalize_write","comments":" Store the contents of the stream as an object with the id\n specified in `oid`.\n\n This method might not be invoked if:\n - an error occurs earlier with the `write` callback,\n - the object referred to by `oid` already exists in any backend, or\n - the final number of received bytes differs from the size declared\n   with `git_odb_open_wstream()`"},{"type":"void (*)(git_odb_stream *)","name":"free","comments":" Free the stream's memory.\n\n This method might be called without a call to `finalize_write` if\n an error occurs or if the object is already present in the ODB."}],"used":{"returns":[],"needs":["git_odb_open_rstream","git_odb_open_wstream","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write"]}}],["git_odb_stream_t",{"decl":["GIT_STREAM_RDONLY","GIT_STREAM_WRONLY","GIT_STREAM_RW"],"type":"enum","file":"odb_backend.h","line":70,"lineto":74,"block":"GIT_STREAM_RDONLY\nGIT_STREAM_WRONLY\nGIT_STREAM_RW","tdef":"typedef","description":" Streaming mode ","comments":"","fields":[{"type":"int","name":"GIT_STREAM_RDONLY","comments":"","value":2},{"type":"int","name":"GIT_STREAM_WRONLY","comments":"","value":4},{"type":"int","name":"GIT_STREAM_RW","comments":"","value":6}],"used":{"returns":[],"needs":[]}}],["git_odb_writepack",{"decl":"git_odb_writepack","type":"struct","value":"git_odb_writepack","file":"types.h","line":93,"lineto":93,"block":"git_odb_backend * backend\nint (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *) append\nint (*)(git_odb_writepack *, git_transfer_progress *) commit\nvoid (*)(git_odb_writepack *) free","tdef":"typedef","description":" A stream to write a packfile to the ODB ","comments":"","fields":[{"type":"git_odb_backend *","name":"backend","comments":""},{"type":"int (*)(git_odb_writepack *, const void *, size_t, git_transfer_progress *)","name":"append","comments":""},{"type":"int (*)(git_odb_writepack *, git_transfer_progress *)","name":"commit","comments":""},{"type":"void (*)(git_odb_writepack *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_odb_write_pack"]}}],["git_oid",{"decl":["unsigned char [20] id"],"type":"struct","value":"git_oid","file":"oid.h","line":33,"lineto":36,"block":"unsigned char [20] id","tdef":"typedef","description":" Unique identity of any object (commit, tree, blob, tag). ","comments":"","fields":[{"type":"unsigned char [20]","name":"id","comments":" raw binary formatted id "}],"used":{"returns":["git_annotated_commit_id","git_blob_id","git_commit_id","git_commit_parent_id","git_commit_tree_id","git_filter_source_id","git_index_checksum","git_indexer_hash","git_note_id","git_object_id","git_odb_object_id","git_oid_shorten_new","git_packbuilder_hash","git_reference_target","git_reference_target_peel","git_reflog_entry_id_new","git_reflog_entry_id_old","git_submodule_head_id","git_submodule_index_id","git_submodule_wd_id","git_tag_id","git_tag_target_id","git_tree_entry_id","git_tree_id"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_lookup","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_commit_amend","git_commit_create","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_graph_ahead_behind","git_graph_descendant_of","git_index_write_tree","git_index_write_tree_to","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_note_create","git_note_foreach_cb","git_note_next","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_odb_exists","git_odb_exists_prefix","git_odb_foreach_cb","git_odb_hash","git_odb_hashfile","git_odb_open_rstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_stream_finalize_write","git_odb_write","git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s","git_oidarray_free","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_rebase_commit","git_reference__alloc","git_reference_create","git_reference_create_matching","git_reference_name_to_id","git_reference_set_target","git_reflog_append","git_repository_hashfile","git_repository_set_head_detached","git_revwalk_hide","git_revwalk_hide_cb","git_revwalk_next","git_revwalk_push","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_byid","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_insert","git_treebuilder_write"]}}],["git_oid_shorten",{"decl":"git_oid_shorten","type":"struct","value":"git_oid_shorten","file":"oid.h","line":216,"lineto":216,"tdef":"typedef","description":" OID Shortener object","comments":"","used":{"returns":["git_oid_shorten_new"],"needs":["git_oid_shorten_add","git_oid_shorten_free"]}}],["git_oidarray",{"decl":["git_oid * ids","size_t count"],"type":"struct","value":"git_oidarray","file":"oidarray.h","line":16,"lineto":19,"block":"git_oid * ids\nsize_t count","tdef":"typedef","description":" Array of object ids ","comments":"","fields":[{"type":"git_oid *","name":"ids","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_merge_bases","git_merge_bases_many","git_oidarray_free"]}}],["git_otype",{"decl":["GIT_OBJ_ANY","GIT_OBJ_BAD","GIT_OBJ__EXT1","GIT_OBJ_COMMIT","GIT_OBJ_TREE","GIT_OBJ_BLOB","GIT_OBJ_TAG","GIT_OBJ__EXT2","GIT_OBJ_OFS_DELTA","GIT_OBJ_REF_DELTA"],"type":"enum","file":"types.h","line":67,"lineto":78,"block":"GIT_OBJ_ANY\nGIT_OBJ_BAD\nGIT_OBJ__EXT1\nGIT_OBJ_COMMIT\nGIT_OBJ_TREE\nGIT_OBJ_BLOB\nGIT_OBJ_TAG\nGIT_OBJ__EXT2\nGIT_OBJ_OFS_DELTA\nGIT_OBJ_REF_DELTA","tdef":"typedef","description":" Basic type (loose or packed) of any Git object. ","comments":"","fields":[{"type":"int","name":"GIT_OBJ_ANY","comments":"<p>Object can be any of the following </p>\n","value":-2},{"type":"int","name":"GIT_OBJ_BAD","comments":"<p>Object is invalid. </p>\n","value":-1},{"type":"int","name":"GIT_OBJ__EXT1","comments":"<p>Reserved for future use. </p>\n","value":0},{"type":"int","name":"GIT_OBJ_COMMIT","comments":"<p>A commit object. </p>\n","value":1},{"type":"int","name":"GIT_OBJ_TREE","comments":"<p>A tree (directory listing) object. </p>\n","value":2},{"type":"int","name":"GIT_OBJ_BLOB","comments":"<p>A file revision object. </p>\n","value":3},{"type":"int","name":"GIT_OBJ_TAG","comments":"<p>An annotated tag object. </p>\n","value":4},{"type":"int","name":"GIT_OBJ__EXT2","comments":"<p>Reserved for future use. </p>\n","value":5},{"type":"int","name":"GIT_OBJ_OFS_DELTA","comments":"<p>A delta, base is given by an offset. </p>\n","value":6},{"type":"int","name":"GIT_OBJ_REF_DELTA","comments":"<p>A delta, base is given by object id. </p>\n","value":7}],"used":{"returns":["git_object_string2type","git_object_type","git_odb_object_type","git_tag_target_type","git_tree_entry_type"],"needs":["git_object__size","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_peel","git_object_type2string","git_object_typeisloose","git_odb_hash","git_odb_hashfile","git_odb_open_wstream","git_odb_read_header","git_odb_write","git_reference_peel","git_repository_hashfile"]}}],["git_packbuilder",{"decl":"git_packbuilder","type":"struct","value":"git_packbuilder","file":"types.h","line":153,"lineto":153,"tdef":"typedef","description":" Representation of a git packbuilder ","comments":"","used":{"returns":[],"needs":["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]}}],["git_packbuilder_stage_t",{"decl":["GIT_PACKBUILDER_ADDING_OBJECTS","GIT_PACKBUILDER_DELTAFICATION"],"type":"enum","file":"pack.h","line":51,"lineto":54,"block":"GIT_PACKBUILDER_ADDING_OBJECTS\nGIT_PACKBUILDER_DELTAFICATION","tdef":"typedef","description":" Stages that are reported by the packbuilder progress callback.","comments":"","fields":[{"type":"int","name":"GIT_PACKBUILDER_ADDING_OBJECTS","comments":"","value":0},{"type":"int","name":"GIT_PACKBUILDER_DELTAFICATION","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_patch",{"decl":"git_patch","type":"struct","value":"git_patch","file":"patch.h","line":29,"lineto":29,"tdef":"typedef","description":" The diff patch is used to store all the text diffs for a delta.","comments":"<p>You can easily loop over the content of patches and get information about them.</p>\n","used":{"returns":[],"needs":["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]}}],["git_pathspec",{"decl":"git_pathspec","type":"struct","value":"git_pathspec","file":"pathspec.h","line":20,"lineto":20,"tdef":"typedef","description":" Compiled pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]}}],["git_pathspec_flag_t",{"decl":["GIT_PATHSPEC_DEFAULT","GIT_PATHSPEC_IGNORE_CASE","GIT_PATHSPEC_USE_CASE","GIT_PATHSPEC_NO_GLOB","GIT_PATHSPEC_NO_MATCH_ERROR","GIT_PATHSPEC_FIND_FAILURES","GIT_PATHSPEC_FAILURES_ONLY"],"type":"enum","file":"pathspec.h","line":48,"lineto":56,"block":"GIT_PATHSPEC_DEFAULT\nGIT_PATHSPEC_IGNORE_CASE\nGIT_PATHSPEC_USE_CASE\nGIT_PATHSPEC_NO_GLOB\nGIT_PATHSPEC_NO_MATCH_ERROR\nGIT_PATHSPEC_FIND_FAILURES\nGIT_PATHSPEC_FAILURES_ONLY","tdef":"typedef","description":" Options controlling how pathspec match should be executed","comments":"<ul>\n<li>GIT_PATHSPEC_IGNORE_CASE forces match to ignore case; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_USE_CASE forces case sensitive match; otherwise   match will use native case sensitivity of platform filesystem - GIT_PATHSPEC_NO_GLOB disables glob patterns and just uses simple   string comparison for matching - GIT_PATHSPEC_NO_MATCH_ERROR means the match functions return error   code GIT_ENOTFOUND if no matches are found; otherwise no matches is   still success (return 0) but <code>git_pathspec_match_list_entrycount</code>   will indicate 0 matches. - GIT_PATHSPEC_FIND_FAILURES means that the <code>git_pathspec_match_list</code>   should track which patterns matched which files so that at the end of   the match we can identify patterns that did not match any files. - GIT_PATHSPEC_FAILURES_ONLY means that the <code>git_pathspec_match_list</code>   does not need to keep the actual matching filenames.  Use this to   just test if there were any matches at all or in combination with   GIT_PATHSPEC_FIND_FAILURES to validate a pathspec.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_PATHSPEC_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_PATHSPEC_IGNORE_CASE","comments":"","value":1},{"type":"int","name":"GIT_PATHSPEC_USE_CASE","comments":"","value":2},{"type":"int","name":"GIT_PATHSPEC_NO_GLOB","comments":"","value":4},{"type":"int","name":"GIT_PATHSPEC_NO_MATCH_ERROR","comments":"","value":8},{"type":"int","name":"GIT_PATHSPEC_FIND_FAILURES","comments":"","value":16},{"type":"int","name":"GIT_PATHSPEC_FAILURES_ONLY","comments":"","value":32}],"used":{"returns":[],"needs":[]}}],["git_pathspec_match_list",{"decl":"git_pathspec_match_list","type":"struct","value":"git_pathspec_match_list","file":"pathspec.h","line":25,"lineto":25,"tdef":"typedef","description":" List of filenames matching a pathspec","comments":"","used":{"returns":[],"needs":["git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir"]}}],["git_proxy_options",{"decl":["unsigned int version","git_proxy_t type","const char * url","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","void * payload"],"type":"struct","value":"git_proxy_options","file":"proxy.h","line":42,"lineto":77,"block":"unsigned int version\ngit_proxy_t type\nconst char * url\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\nvoid * payload","tdef":"typedef","description":" Options for connecting through a proxy","comments":"<p>Note that not all types may be supported, depending on the platform and compilation options.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_proxy_t","name":"type","comments":" The type of proxy to use, by URL, auto-detect."},{"type":"const char *","name":"url","comments":" The URL of the proxy."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"void *","name":"payload","comments":" Payload to be provided to the credentials and certificate\n check callbacks."}],"used":{"returns":[],"needs":["git_proxy_init_options","git_remote_connect"]}}],["git_proxy_t",{"decl":["GIT_PROXY_NONE","GIT_PROXY_AUTO","GIT_PROXY_SPECIFIED"],"type":"enum","file":"proxy.h","line":18,"lineto":34,"block":"GIT_PROXY_NONE\nGIT_PROXY_AUTO\nGIT_PROXY_SPECIFIED","tdef":"typedef","description":" The type of proxy to use.","comments":"","fields":[{"type":"int","name":"GIT_PROXY_NONE","comments":"<p>Do not attempt to connect through a proxy</p>\n\n<p>If built against libcurl, it itself may attempt to connect\n to a proxy if the environment variables specify it.</p>\n","value":0},{"type":"int","name":"GIT_PROXY_AUTO","comments":"<p>Try to auto-detect the proxy from the git configuration.</p>\n","value":1},{"type":"int","name":"GIT_PROXY_SPECIFIED","comments":"<p>Connect via the URL given in the options</p>\n","value":2}],"used":{"returns":[],"needs":[]}}],["git_push",{"decl":"git_push","type":"struct","value":"git_push","file":"types.h","line":236,"lineto":236,"tdef":"typedef","description":" Preparation for a push operation. Can be used to configure what to\n push and the level of parallelism of the packfile builder.","comments":"","used":{"returns":[],"needs":["git_push_init_options","git_push_negotiation","git_remote_push","git_remote_upload"]}}],["git_push_options",{"decl":["unsigned int version","unsigned int pb_parallelism","git_remote_callbacks callbacks","git_proxy_options proxy_opts","git_strarray custom_headers"],"type":"struct","value":"git_push_options","file":"remote.h","line":585,"lineto":612,"block":"unsigned int version\nunsigned int pb_parallelism\ngit_remote_callbacks callbacks\ngit_proxy_options proxy_opts\ngit_strarray custom_headers","tdef":"typedef","description":" Controls the behavior of a git_push object.","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"pb_parallelism","comments":" If the transport being used to push to the remote requires the creation\n of a pack file, this controls the number of worker threads used by\n the packbuilder when creating that pack file to be sent to the remote.\n\n If set to 0, the packbuilder will auto-detect the number of threads\n to create. The default value is 1."},{"type":"git_remote_callbacks","name":"callbacks","comments":" Callbacks to use for this push operation"},{"type":"git_proxy_options","name":"proxy_opts","comments":" Proxy options to use, by default no proxy is used."},{"type":"git_strarray","name":"custom_headers","comments":" Extra headers for this push operation"}],"used":{"returns":[],"needs":["git_push_init_options","git_remote_push","git_remote_upload"]}}],["git_push_update",{"decl":["char * src_refname","char * dst_refname","git_oid src","git_oid dst"],"type":"struct","value":"git_push_update","file":"remote.h","line":341,"lineto":358,"block":"char * src_refname\nchar * dst_refname\ngit_oid src\ngit_oid dst","tdef":"typedef","description":" Represents an update which will be performed on the remote during push","comments":"","fields":[{"type":"char *","name":"src_refname","comments":" The source name of the reference"},{"type":"char *","name":"dst_refname","comments":" The name of the reference to update on the server"},{"type":"git_oid","name":"src","comments":" The current target of the reference"},{"type":"git_oid","name":"dst","comments":" The new target for the reference"}],"used":{"returns":[],"needs":["git_push_negotiation"]}}],["git_rebase",{"decl":"git_rebase","type":"struct","value":"git_rebase","file":"types.h","line":187,"lineto":187,"tdef":"typedef","description":" Representation of a rebase ","comments":"","used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]}}],["git_rebase_operation",{"decl":["git_rebase_operation_t type","const git_oid id","const char * exec"],"type":"struct","value":"git_rebase_operation","file":"rebase.h","line":130,"lineto":145,"block":"git_rebase_operation_t type\nconst git_oid id\nconst char * exec","tdef":"typedef","description":" A rebase operation","comments":"<p>Describes a single instruction/operation to be performed during the rebase.</p>\n","fields":[{"type":"git_rebase_operation_t","name":"type","comments":" The type of rebase operation. "},{"type":"const git_oid","name":"id","comments":" The commit ID being cherry-picked.  This will be populated for\n all operations except those of type `GIT_REBASE_OPERATION_EXEC`."},{"type":"const char *","name":"exec","comments":" The executable the user has requested be run.  This will only\n be populated for operations of type `GIT_REBASE_OPERATION_EXEC`."}],"used":{"returns":["git_rebase_operation_byindex"],"needs":["git_rebase_next"]}}],["git_rebase_operation_t",{"decl":["GIT_REBASE_OPERATION_PICK","GIT_REBASE_OPERATION_REWORD","GIT_REBASE_OPERATION_EDIT","GIT_REBASE_OPERATION_SQUASH","GIT_REBASE_OPERATION_FIXUP","GIT_REBASE_OPERATION_EXEC"],"type":"enum","file":"rebase.h","line":78,"lineto":114,"block":"GIT_REBASE_OPERATION_PICK\nGIT_REBASE_OPERATION_REWORD\nGIT_REBASE_OPERATION_EDIT\nGIT_REBASE_OPERATION_SQUASH\nGIT_REBASE_OPERATION_FIXUP\nGIT_REBASE_OPERATION_EXEC","tdef":"typedef","description":" Type of rebase operation in-progress after calling `git_rebase_next`.","comments":"","fields":[{"type":"int","name":"GIT_REBASE_OPERATION_PICK","comments":"<p>The given commit is to be cherry-picked.  The client should commit\n the changes and continue if there are no conflicts.</p>\n","value":0},{"type":"int","name":"GIT_REBASE_OPERATION_REWORD","comments":"<p>The given commit is to be cherry-picked, but the client should prompt\n the user to provide an updated commit message.</p>\n","value":1},{"type":"int","name":"GIT_REBASE_OPERATION_EDIT","comments":"<p>The given commit is to be cherry-picked, but the client should stop\n to allow the user to edit the changes before committing them.</p>\n","value":2},{"type":"int","name":"GIT_REBASE_OPERATION_SQUASH","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message will be merged with the previous message.</p>\n","value":3},{"type":"int","name":"GIT_REBASE_OPERATION_FIXUP","comments":"<p>The given commit is to be squashed into the previous commit.  The\n commit message from this commit will be discarded.</p>\n","value":4},{"type":"int","name":"GIT_REBASE_OPERATION_EXEC","comments":"<p>No commit will be cherry-picked.  The client should run the given\n command and (if successful) continue.</p>\n","value":5}],"used":{"returns":[],"needs":[]}}],["git_ref_t",{"decl":["GIT_REF_INVALID","GIT_REF_OID","GIT_REF_SYMBOLIC","GIT_REF_LISTALL"],"type":"enum","file":"types.h","line":190,"lineto":195,"block":"GIT_REF_INVALID\nGIT_REF_OID\nGIT_REF_SYMBOLIC\nGIT_REF_LISTALL","tdef":"typedef","description":" Basic type of any Git reference. ","comments":"","fields":[{"type":"int","name":"GIT_REF_INVALID","comments":"<p>Invalid reference </p>\n","value":0},{"type":"int","name":"GIT_REF_OID","comments":"<p>A reference which points at an object id </p>\n","value":1},{"type":"int","name":"GIT_REF_SYMBOLIC","comments":"<p>A reference which points at another reference </p>\n","value":2},{"type":"int","name":"GIT_REF_LISTALL","comments":"","value":3}],"used":{"returns":["git_reference_type"],"needs":[]}}],["git_refdb",{"decl":"git_refdb","type":"struct","value":"git_refdb","file":"types.h","line":96,"lineto":96,"tdef":"typedef","description":" An open refs database handle. ","comments":"","used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend","git_repository_refdb","git_repository_set_refdb"]}}],["git_refdb_backend",{"decl":"git_refdb_backend","type":"struct","value":"git_refdb_backend","file":"types.h","line":99,"lineto":99,"block":"unsigned int version\nint (*)(int *, git_refdb_backend *, const char *) exists\nint (*)(git_reference **, git_refdb_backend *, const char *) lookup\nint (*)(git_reference_iterator **, struct git_refdb_backend *, const char *) iterator\nint (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *) write\nint (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *) rename\nint (*)(git_refdb_backend *, const char *, const git_oid *, const char *) del\nint (*)(git_refdb_backend *) compress\nint (*)(git_refdb_backend *, const char *) has_log\nint (*)(git_refdb_backend *, const char *) ensure_log\nvoid (*)(git_refdb_backend *) free\nint (*)(git_reflog **, git_refdb_backend *, const char *) reflog_read\nint (*)(git_refdb_backend *, git_reflog *) reflog_write\nint (*)(git_refdb_backend *, const char *, const char *) reflog_rename\nint (*)(git_refdb_backend *, const char *) reflog_delete\nint (*)(void **, git_refdb_backend *, const char *) lock\nint (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *) unlock","tdef":"typedef","description":" A custom backend for refs ","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"int (*)(int *, git_refdb_backend *, const char *)","name":"exists","comments":" Queries the refdb backend to determine if the given ref_name\n exists.  A refdb implementation must provide this function."},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *)","name":"lookup","comments":" Queries the refdb backend for a given reference.  A refdb\n implementation must provide this function."},{"type":"int (*)(git_reference_iterator **, struct git_refdb_backend *, const char *)","name":"iterator","comments":" Allocate an iterator object for the backend.\n\n A refdb implementation must provide this function."},{"type":"int (*)(git_refdb_backend *, const git_reference *, int, const git_signature *, const char *, const git_oid *, const char *)","name":"write","comments":""},{"type":"int (*)(git_reference **, git_refdb_backend *, const char *, const char *, int, const git_signature *, const char *)","name":"rename","comments":""},{"type":"int (*)(git_refdb_backend *, const char *, const git_oid *, const char *)","name":"del","comments":" Deletes the given reference (and if necessary its reflog)\n from the refdb.  A refdb implementation must provide this\n function."},{"type":"int (*)(git_refdb_backend *)","name":"compress","comments":" Suggests that the given refdb compress or optimize its references.\n This mechanism is implementation specific.  (For on-disk reference\n databases, this may pack all loose references.)    A refdb\n implementation may provide this function; if it is not provided,\n nothing will be done."},{"type":"int (*)(git_refdb_backend *, const char *)","name":"has_log","comments":" Query whether a particular reference has a log (may be empty)"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"ensure_log","comments":" Make sure a particular reference will have a reflog which\n will be appended to on writes."},{"type":"void (*)(git_refdb_backend *)","name":"free","comments":" Frees any resources held by the refdb (including the `git_refdb_backend`\n itself). A refdb backend implementation must provide this function."},{"type":"int (*)(git_reflog **, git_refdb_backend *, const char *)","name":"reflog_read","comments":" Read the reflog for the given reference name."},{"type":"int (*)(git_refdb_backend *, git_reflog *)","name":"reflog_write","comments":" Write a reflog to disk."},{"type":"int (*)(git_refdb_backend *, const char *, const char *)","name":"reflog_rename","comments":" Rename a reflog"},{"type":"int (*)(git_refdb_backend *, const char *)","name":"reflog_delete","comments":" Remove a reflog."},{"type":"int (*)(void **, git_refdb_backend *, const char *)","name":"lock","comments":" Lock a reference. The opaque parameter will be passed to the unlock function"},{"type":"int (*)(git_refdb_backend *, void *, int, int, const git_reference *, const git_signature *, const char *)","name":"unlock","comments":" Unlock a reference. Only one of target or symbolic_target\n will be set. success indicates whether to update the\n reference or discard the lock (if it's false)"}],"used":{"returns":[],"needs":["git_refdb_backend_fs","git_refdb_init_backend","git_refdb_set_backend"]}}],["git_reference",{"decl":"git_reference","type":"struct","value":"git_reference","file":"types.h","line":169,"lineto":169,"tdef":"typedef","description":" In-memory representation of a reference. ","comments":"","used":{"returns":["git_reference__alloc","git_reference__alloc_symbolic"],"needs":["git_annotated_commit_from_ref","git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_lookup","git_reference_name","git_reference_next","git_reference_next_name","git_reference_owner","git_reference_peel","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type","git_repository_head","git_revparse_ext"]}}],["git_reference_iterator",{"decl":"git_reference_iterator","type":"struct","value":"git_reference_iterator","file":"types.h","line":172,"lineto":172,"block":"git_refdb * db\nint (*)(git_reference **, git_reference_iterator *) next\nint (*)(const char **, git_reference_iterator *) next_name\nvoid (*)(git_reference_iterator *) free","tdef":"typedef","description":" Iterator for references ","comments":"","fields":[{"type":"git_refdb *","name":"db","comments":""},{"type":"int (*)(git_reference **, git_reference_iterator *)","name":"next","comments":" Return the current reference and advance the iterator."},{"type":"int (*)(const char **, git_reference_iterator *)","name":"next_name","comments":" Return the name of the current reference and advance the iterator"},{"type":"void (*)(git_reference_iterator *)","name":"free","comments":" Free the iterator"}],"used":{"returns":[],"needs":["git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_next","git_reference_next_name"]}}],["git_reference_normalize_t",{"decl":["GIT_REF_FORMAT_NORMAL","GIT_REF_FORMAT_ALLOW_ONELEVEL","GIT_REF_FORMAT_REFSPEC_PATTERN","GIT_REF_FORMAT_REFSPEC_SHORTHAND"],"type":"enum","file":"refs.h","line":636,"lineto":665,"block":"GIT_REF_FORMAT_NORMAL\nGIT_REF_FORMAT_ALLOW_ONELEVEL\nGIT_REF_FORMAT_REFSPEC_PATTERN\nGIT_REF_FORMAT_REFSPEC_SHORTHAND","tdef":"typedef","description":" Normalization options for reference lookup","comments":"","fields":[{"type":"int","name":"GIT_REF_FORMAT_NORMAL","comments":"<p>No particular normalization.</p>\n","value":0},{"type":"int","name":"GIT_REF_FORMAT_ALLOW_ONELEVEL","comments":"<p>Control whether one-level refnames are accepted\n (i.e., refnames that do not contain multiple /-separated\n components). Those are expected to be written only using\n uppercase letters and underscore (FETCH_HEAD, ...)</p>\n","value":1},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_PATTERN","comments":"<p>Interpret the provided name as a reference pattern for a\n refspec (as used with remote repositories). If this option\n is enabled, the name is allowed to contain a single * (\n&lt;star</p>\n\n<blockquote>\n<p>)\n in place of a one full pathname component\n (e.g., foo/\n&lt;star\n/bar but not foo/bar\n&lt;star\n).</p>\n</blockquote>\n","value":2},{"type":"int","name":"GIT_REF_FORMAT_REFSPEC_SHORTHAND","comments":"<p>Interpret the name as part of a refspec in shorthand form\n so the <code>ONELEVEL</code> naming rules aren&#39;t enforced and &#39;master&#39;\n becomes a valid name.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_reflog",{"decl":"git_reflog","type":"struct","value":"git_reflog","file":"types.h","line":147,"lineto":147,"tdef":"typedef","description":" Representation of a reference log ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_append","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_write"]}}],["git_reflog_entry",{"decl":"git_reflog_entry","type":"struct","value":"git_reflog_entry","file":"types.h","line":144,"lineto":144,"tdef":"typedef","description":" Representation of a reference log entry ","comments":"","used":{"returns":["git_reflog_entry_byindex"],"needs":["git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message"]}}],["git_remote",{"decl":"git_remote","type":"struct","value":"git_remote","file":"types.h","line":224,"lineto":224,"tdef":"typedef","description":" Git's idea of a remote repository. A remote can be anonymous (in\n which case it does not have backing configuration entires).","comments":"","used":{"returns":["git_remote_autotag"],"needs":["git_headlist_cb","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_set_autotag","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url","git_transport_cb","git_transport_dummy","git_transport_local","git_transport_new","git_transport_smart","git_transport_ssh_with_paths"]}}],["git_remote_autotag_option_t",{"decl":["GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","GIT_REMOTE_DOWNLOAD_TAGS_AUTO","GIT_REMOTE_DOWNLOAD_TAGS_NONE","GIT_REMOTE_DOWNLOAD_TAGS_ALL"],"type":"enum","file":"remote.h","line":497,"lineto":515,"block":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED\nGIT_REMOTE_DOWNLOAD_TAGS_AUTO\nGIT_REMOTE_DOWNLOAD_TAGS_NONE\nGIT_REMOTE_DOWNLOAD_TAGS_ALL","tdef":"typedef","description":" Automatic tag following option","comments":"<p>Lets us select the --tags option to use.</p>\n","fields":[{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_UNSPECIFIED","comments":"<p>Use the setting from the configuration.</p>\n","value":0},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_AUTO","comments":"<p>Ask the server for tags pointing to objects we&#39;re already\n downloading.</p>\n","value":1},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_NONE","comments":"<p>Don&#39;t ask for any tags beyond the refspecs.</p>\n","value":2},{"type":"int","name":"GIT_REMOTE_DOWNLOAD_TAGS_ALL","comments":"<p>Ask for the all the tags.</p>\n","value":3}],"used":{"returns":["git_remote_autotag"],"needs":["git_remote_set_autotag","git_remote_update_tips"]}}],["git_remote_callbacks",{"decl":["unsigned int version","git_transport_message_cb sideband_progress","int (*)(git_remote_completion_type, void *) completion","git_cred_acquire_cb credentials","git_transport_certificate_check_cb certificate_check","git_transfer_progress_cb transfer_progress","int (*)(const char *, const git_oid *, const git_oid *, void *) update_tips","git_packbuilder_progress pack_progress","git_push_transfer_progress push_transfer_progress","int (*)(const char *, const char *, void *) push_update_reference","git_push_negotiation push_negotiation","git_transport_cb transport","void * payload"],"type":"struct","value":"git_remote_callbacks","file":"remote.h","line":376,"lineto":460,"block":"unsigned int version\ngit_transport_message_cb sideband_progress\nint (*)(git_remote_completion_type, void *) completion\ngit_cred_acquire_cb credentials\ngit_transport_certificate_check_cb certificate_check\ngit_transfer_progress_cb transfer_progress\nint (*)(const char *, const git_oid *, const git_oid *, void *) update_tips\ngit_packbuilder_progress pack_progress\ngit_push_transfer_progress push_transfer_progress\nint (*)(const char *, const char *, void *) push_update_reference\ngit_push_negotiation push_negotiation\ngit_transport_cb transport\nvoid * payload","tdef":null,"description":" The callback settings structure","comments":"<p>Set the callbacks to be called by the remote when informing the user about the progress of the network operations.</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_transport_message_cb","name":"sideband_progress","comments":" Textual progress from the remote. Text send over the\n progress side-band will be passed to this function (this is\n the 'counting objects' output)."},{"type":"int (*)(git_remote_completion_type, void *)","name":"completion","comments":" Completion is called when different parts of the download\n process are done (currently unused)."},{"type":"git_cred_acquire_cb","name":"credentials","comments":" This will be called if the remote host requires\n authentication in order to connect to it.\n\n Returning GIT_PASSTHROUGH will make libgit2 behave as\n though this field isn't set."},{"type":"git_transport_certificate_check_cb","name":"certificate_check","comments":" If cert verification fails, this will be called to let the\n user make the final decision of whether to allow the\n connection to proceed. Returns 1 to allow the connection, 0\n to disallow it or a negative value to indicate an error."},{"type":"git_transfer_progress_cb","name":"transfer_progress","comments":" During the download of new data, this will be regularly\n called with the current count of progress done by the\n indexer."},{"type":"int (*)(const char *, const git_oid *, const git_oid *, void *)","name":"update_tips","comments":" Each time a reference is updated locally, this function\n will be called with information about it."},{"type":"git_packbuilder_progress","name":"pack_progress","comments":" Function to call with progress information during pack\n building. Be aware that this is called inline with pack\n building operations, so performance may be affected."},{"type":"git_push_transfer_progress","name":"push_transfer_progress","comments":" Function to call with progress information during the\n upload portion of a push. Be aware that this is called\n inline with pack building operations, so performance may be\n affected."},{"type":"int (*)(const char *, const char *, void *)","name":"push_update_reference","comments":" Called for each updated reference on push. If `status` is\n not `NULL`, the update was rejected by the remote server\n and `status` contains the reason given."},{"type":"git_push_negotiation","name":"push_negotiation","comments":" Called once between the negotiation step and the upload. It\n provides information about what updates will be performed."},{"type":"git_transport_cb","name":"transport","comments":" Create the transport to use for this operation. Leave NULL\n to auto-detect."},{"type":"void *","name":"payload","comments":" This will be passed to each of the callbacks in this struct\n as the last parameter."}],"used":{"returns":[],"needs":["git_remote_connect","git_remote_init_callbacks","git_remote_prune","git_remote_update_tips"]}}],["git_remote_completion_type",{"decl":["GIT_REMOTE_COMPLETION_DOWNLOAD","GIT_REMOTE_COMPLETION_INDEXING","GIT_REMOTE_COMPLETION_ERROR"],"type":"enum","file":"remote.h","line":326,"lineto":330,"block":"GIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR\nGIT_REMOTE_COMPLETION_DOWNLOAD\nGIT_REMOTE_COMPLETION_INDEXING\nGIT_REMOTE_COMPLETION_ERROR","tdef":"typedef","description":" Argument to the completion callback which tells it which operation\n finished.","comments":"","fields":[{"type":"int","name":"GIT_REMOTE_COMPLETION_DOWNLOAD","comments":"","value":0},{"type":"int","name":"GIT_REMOTE_COMPLETION_INDEXING","comments":"","value":1},{"type":"int","name":"GIT_REMOTE_COMPLETION_ERROR","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_remote_head",{"decl":["int local","git_oid oid","git_oid loid","char * name","char * symref_target"],"type":"struct","value":"git_remote_head","file":"net.h","line":40,"lineto":50,"block":"int local\ngit_oid oid\ngit_oid loid\nchar * name\nchar * symref_target","tdef":null,"description":" Description of a reference advertised by a remote server, given out\n on `ls` calls.","comments":"","fields":[{"type":"int","name":"local","comments":""},{"type":"git_oid","name":"oid","comments":""},{"type":"git_oid","name":"loid","comments":""},{"type":"char *","name":"name","comments":""},{"type":"char *","name":"symref_target","comments":" If the server send a symref mapping for this ref, this will\n point to the target."}],"used":{"returns":[],"needs":["git_headlist_cb","git_remote_ls"]}}],["git_repository",{"decl":"git_repository","type":"struct","value":"git_repository","file":"types.h","line":105,"lineto":105,"tdef":"typedef","description":" Representation of an existing git repository,\n including all its object contents","comments":"","used":{"returns":["git_blob_owner","git_commit_owner","git_filter_source_repo","git_index_owner","git_object_owner","git_reference_owner","git_remote_owner","git_revwalk_repository","git_submodule_owner","git_tag_owner","git_tree_owner"],"needs":["git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_lookup","git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_blame_file","git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromworkdir","git_blob_lookup","git_blob_lookup_prefix","git_branch_create","git_branch_create_from_annotated","git_branch_iterator_new","git_branch_lookup","git_checkout_head","git_checkout_index","git_checkout_tree","git_cherrypick","git_cherrypick_commit","git_clone","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_extract_signature","git_commit_lookup","git_commit_lookup_prefix","git_describe_workdir","git_diff_commit_as_email","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_filter_list_apply_to_file","git_filter_list_load","git_filter_list_new","git_filter_list_stream_file","git_graph_ahead_behind","git_graph_descendant_of","git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored","git_index_write_tree_to","git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file_from_index","git_merge_trees","git_note_create","git_note_foreach","git_note_iterator_new","git_note_read","git_note_remove","git_object_lookup","git_object_lookup_prefix","git_packbuilder_new","git_pathspec_match_workdir","git_rebase_init","git_rebase_open","git_refdb_backend_fs","git_refdb_new","git_refdb_open","git_reference_create","git_reference_create_matching","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_has_log","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name_to_id","git_reference_remove","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reflog_delete","git_reflog_read","git_reflog_rename","git_remote_add_fetch","git_remote_add_push","git_remote_create","git_remote_create_anonymous","git_remote_create_cb","git_remote_create_with_fetchspec","git_remote_delete","git_remote_list","git_remote_lookup","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_create_cb","git_repository_detach_head","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb","git_reset","git_reset_default","git_reset_from_annotated","git_revert","git_revert_commit","git_revparse","git_revparse_ext","git_revparse_single","git_revwalk_new","git_signature_default","git_stash_apply","git_stash_drop","git_stash_foreach","git_stash_pop","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_list_new","git_status_should_ignore","git_submodule_add_setup","git_submodule_foreach","git_submodule_lookup","git_submodule_open","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_foreach","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tree_create_updated","git_tree_entry_to_object","git_tree_lookup","git_tree_lookup_prefix","git_treebuilder_new"]}}],["git_repository_init_flag_t",{"decl":["GIT_REPOSITORY_INIT_BARE","GIT_REPOSITORY_INIT_NO_REINIT","GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","GIT_REPOSITORY_INIT_MKDIR","GIT_REPOSITORY_INIT_MKPATH","GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","GIT_REPOSITORY_INIT_RELATIVE_GITLINK"],"type":"enum","file":"repository.h","line":221,"lineto":229,"block":"GIT_REPOSITORY_INIT_BARE\nGIT_REPOSITORY_INIT_NO_REINIT\nGIT_REPOSITORY_INIT_NO_DOTGIT_DIR\nGIT_REPOSITORY_INIT_MKDIR\nGIT_REPOSITORY_INIT_MKPATH\nGIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE\nGIT_REPOSITORY_INIT_RELATIVE_GITLINK","tdef":"typedef","description":" Option flags for `git_repository_init_ext`.","comments":"<p>These flags configure extra behaviors to <code>git_repository_init_ext</code>. In every case, the default behavior is the zero value (i.e. flag is not set).  Just OR the flag values together for the <code>flags</code> parameter when initializing a new repo.  Details of individual values are:</p>\n\n<ul>\n<li>BARE   - Create a bare repository with no working directory. * NO_REINIT - Return an GIT_EEXISTS error if the repo_path appears to        already be an git repository. * NO_DOTGIT_DIR - Normally a &quot;/.git/&quot; will be appended to the repo        path for non-bare repos (if it is not already there), but        passing this flag prevents that behavior. * MKDIR  - Make the repo_path (and workdir_path) as needed.  Init is        always willing to create the &quot;.git&quot; directory even without this        flag.  This flag tells init to create the trailing component of        the repo and workdir paths as needed. * MKPATH - Recursively make all components of the repo and workdir        paths as necessary. * EXTERNAL_TEMPLATE - libgit2 normally uses internal templates to        initialize a new repo.  This flags enables external templates,        looking the &quot;template_path&quot; from the options if set, or the        <code>init.templatedir</code> global config if not, or falling back on        &quot;/usr/share/git-core/templates&quot; if it exists. * GIT_REPOSITORY_INIT_RELATIVE_GITLINK - If an alternate workdir is        specified, use relative paths for the gitdir and core.worktree.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_BARE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_REINIT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_INIT_NO_DOTGIT_DIR","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_INIT_MKDIR","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_INIT_MKPATH","comments":"","value":16},{"type":"int","name":"GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE","comments":"","value":32},{"type":"int","name":"GIT_REPOSITORY_INIT_RELATIVE_GITLINK","comments":"","value":64}],"used":{"returns":[],"needs":[]}}],["git_repository_init_mode_t",{"decl":["GIT_REPOSITORY_INIT_SHARED_UMASK","GIT_REPOSITORY_INIT_SHARED_GROUP","GIT_REPOSITORY_INIT_SHARED_ALL"],"type":"enum","file":"repository.h","line":244,"lineto":248,"block":"GIT_REPOSITORY_INIT_SHARED_UMASK\nGIT_REPOSITORY_INIT_SHARED_GROUP\nGIT_REPOSITORY_INIT_SHARED_ALL","tdef":"typedef","description":" Mode options for `git_repository_init_ext`.","comments":"<p>Set the mode field of the <code>git_repository_init_options</code> structure either to the custom mode that you would like, or to one of the following modes:</p>\n\n<ul>\n<li>SHARED_UMASK - Use permissions configured by umask - the default. * SHARED_GROUP - Use &quot;--shared=group&quot; behavior, chmod&#39;ing the new repo        to be group writable and &quot;g+sx&quot; for sticky group assignment. * SHARED_ALL - Use &quot;--shared=all&quot; behavior, adding world readability. * Anything else - Set to custom value.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_UMASK","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_GROUP","comments":"","value":1533},{"type":"int","name":"GIT_REPOSITORY_INIT_SHARED_ALL","comments":"","value":1535}],"used":{"returns":[],"needs":[]}}],["git_repository_init_options",{"decl":["unsigned int version","uint32_t flags","uint32_t mode","const char * workdir_path","const char * description","const char * template_path","const char * initial_head","const char * origin_url"],"type":"struct","value":"git_repository_init_options","file":"repository.h","line":278,"lineto":287,"block":"unsigned int version\nuint32_t flags\nuint32_t mode\nconst char * workdir_path\nconst char * description\nconst char * template_path\nconst char * initial_head\nconst char * origin_url","tdef":"typedef","description":" Extended options structure for `git_repository_init_ext`.","comments":"<p>This contains extra options for <code>git_repository_init_ext</code> that enable additional initialization features.  The fields are:</p>\n\n<ul>\n<li>flags - Combination of GIT_REPOSITORY_INIT flags above. * mode  - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...        constants above, or to a custom value that you would like. * workdir_path - The path to the working dir or NULL for default (i.e.        repo_path parent on non-bare repos).  IF THIS IS RELATIVE PATH,        IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH.  If this is not        the &quot;natural&quot; working directory, a .git gitlink file will be        created here linking to the repo_path. * description - If set, this will be used to initialize the &quot;description&quot;        file in the repository, instead of using the template content. * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,        this contains the path to use for the template directory.  If        this is NULL, the config or default directory options will be        used instead. * initial_head - The name of the head to point HEAD at.  If NULL, then        this will be treated as &quot;master&quot; and the HEAD ref will be set        to &quot;refs/heads/master&quot;.  If this begins with &quot;refs/&quot; it will be        used verbatim; otherwise &quot;refs/heads/&quot; will be prefixed. * origin_url - If this is non-NULL, then after the rest of the        repository initialization is completed, an &quot;origin&quot; remote        will be added pointing to this URL.</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"uint32_t","name":"flags","comments":""},{"type":"uint32_t","name":"mode","comments":""},{"type":"const char *","name":"workdir_path","comments":""},{"type":"const char *","name":"description","comments":""},{"type":"const char *","name":"template_path","comments":""},{"type":"const char *","name":"initial_head","comments":""},{"type":"const char *","name":"origin_url","comments":""}],"used":{"returns":[],"needs":["git_repository_init_ext","git_repository_init_init_options"]}}],["git_repository_open_flag_t",{"decl":["GIT_REPOSITORY_OPEN_NO_SEARCH","GIT_REPOSITORY_OPEN_CROSS_FS","GIT_REPOSITORY_OPEN_BARE","GIT_REPOSITORY_OPEN_NO_DOTGIT","GIT_REPOSITORY_OPEN_FROM_ENV"],"type":"enum","file":"repository.h","line":115,"lineto":121,"block":"GIT_REPOSITORY_OPEN_NO_SEARCH\nGIT_REPOSITORY_OPEN_CROSS_FS\nGIT_REPOSITORY_OPEN_BARE\nGIT_REPOSITORY_OPEN_NO_DOTGIT\nGIT_REPOSITORY_OPEN_FROM_ENV","tdef":"typedef","description":" Option flags for `git_repository_open_ext`.","comments":"<ul>\n<li>GIT_REPOSITORY_OPEN_NO_SEARCH - Only open the repository if it can be   immediately found in the start_path.  Do not walk up from the   start_path looking at parent directories. * GIT_REPOSITORY_OPEN_CROSS_FS - Unless this flag is set, open will not   continue searching across filesystem boundaries (i.e. when <code>st_dev</code>   changes from the <code>stat</code> system call).  (E.g. Searching in a user&#39;s home   directory &quot;/home/user/source/&quot; will not return &quot;/.git/&quot; as the found   repo if &quot;/&quot; is a different filesystem than &quot;/home&quot;.) * GIT_REPOSITORY_OPEN_BARE - Open repository as a bare repo regardless   of core.bare config, and defer loading config file for faster setup.   Unlike <code>git_repository_open_bare</code>, this can follow gitlinks. * GIT_REPOSITORY_OPEN_NO_DOTGIT - Do not check for a repository by   appending /.git to the start_path; only open the repository if   start_path itself points to the git directory. * GIT_REPOSITORY_OPEN_FROM_ENV - Find and open a git repository,   respecting the environment variables used by the git command-line   tools. If set, <code>git_repository_open_ext</code> will ignore the other   flags and the <code>ceiling_dirs</code> argument, and will allow a NULL <code>path</code>   to use <code>GIT_DIR</code> or search from the current directory. The search   for a repository will respect $GIT_CEILING_DIRECTORIES and   $GIT_DISCOVERY_ACROSS_FILESYSTEM.  The opened repository will   respect $GIT_INDEX_FILE, $GIT_NAMESPACE, $GIT_OBJECT_DIRECTORY, and   $GIT_ALTERNATE_OBJECT_DIRECTORIES.  In the future, this flag will   also cause <code>git_repository_open_ext</code> to respect $GIT_WORK_TREE and   $GIT_COMMON_DIR; currently, <code>git_repository_open_ext</code> with this   flag will error out if either $GIT_WORK_TREE or $GIT_COMMON_DIR is   set.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_SEARCH","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_OPEN_CROSS_FS","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_OPEN_BARE","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_OPEN_NO_DOTGIT","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_OPEN_FROM_ENV","comments":"","value":16}],"used":{"returns":[],"needs":[]}}],["git_repository_state_t",{"decl":["GIT_REPOSITORY_STATE_NONE","GIT_REPOSITORY_STATE_MERGE","GIT_REPOSITORY_STATE_REVERT","GIT_REPOSITORY_STATE_REVERT_SEQUENCE","GIT_REPOSITORY_STATE_CHERRYPICK","GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","GIT_REPOSITORY_STATE_BISECT","GIT_REPOSITORY_STATE_REBASE","GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","GIT_REPOSITORY_STATE_REBASE_MERGE","GIT_REPOSITORY_STATE_APPLY_MAILBOX","GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE"],"type":"enum","file":"repository.h","line":693,"lineto":706,"block":"GIT_REPOSITORY_STATE_NONE\nGIT_REPOSITORY_STATE_MERGE\nGIT_REPOSITORY_STATE_REVERT\nGIT_REPOSITORY_STATE_REVERT_SEQUENCE\nGIT_REPOSITORY_STATE_CHERRYPICK\nGIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE\nGIT_REPOSITORY_STATE_BISECT\nGIT_REPOSITORY_STATE_REBASE\nGIT_REPOSITORY_STATE_REBASE_INTERACTIVE\nGIT_REPOSITORY_STATE_REBASE_MERGE\nGIT_REPOSITORY_STATE_APPLY_MAILBOX\nGIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","tdef":"typedef","description":" Repository state","comments":"<p>These values represent possible states for the repository to be in, based on the current operation which is ongoing.</p>\n","fields":[{"type":"int","name":"GIT_REPOSITORY_STATE_NONE","comments":"","value":0},{"type":"int","name":"GIT_REPOSITORY_STATE_MERGE","comments":"","value":1},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT","comments":"","value":2},{"type":"int","name":"GIT_REPOSITORY_STATE_REVERT_SEQUENCE","comments":"","value":3},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK","comments":"","value":4},{"type":"int","name":"GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE","comments":"","value":5},{"type":"int","name":"GIT_REPOSITORY_STATE_BISECT","comments":"","value":6},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE","comments":"","value":7},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_INTERACTIVE","comments":"","value":8},{"type":"int","name":"GIT_REPOSITORY_STATE_REBASE_MERGE","comments":"","value":9},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX","comments":"","value":10},{"type":"int","name":"GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE","comments":"","value":11}],"used":{"returns":[],"needs":[]}}],["git_reset_t",{"decl":["GIT_RESET_SOFT","GIT_RESET_MIXED","GIT_RESET_HARD"],"type":"enum","file":"reset.h","line":26,"lineto":30,"block":"GIT_RESET_SOFT\nGIT_RESET_MIXED\nGIT_RESET_HARD","tdef":"typedef","description":" Kinds of reset operation","comments":"","fields":[{"type":"int","name":"GIT_RESET_SOFT","comments":"<p>Move the head to the given commit </p>\n","value":1},{"type":"int","name":"GIT_RESET_MIXED","comments":"<p>SOFT plus reset index to the commit </p>\n","value":2},{"type":"int","name":"GIT_RESET_HARD","comments":"<p>MIXED plus changes in working tree discarded </p>\n","value":3}],"used":{"returns":[],"needs":["git_reset","git_reset_from_annotated"]}}],["git_revert_options",{"decl":["unsigned int version","unsigned int mainline","git_merge_options merge_opts","git_checkout_options checkout_opts"],"type":"struct","value":"git_revert_options","file":"revert.h","line":26,"lineto":34,"block":"unsigned int version\nunsigned int mainline\ngit_merge_options merge_opts\ngit_checkout_options checkout_opts","tdef":"typedef","description":" Options for revert","comments":"","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"unsigned int","name":"mainline","comments":" For merge commits, the \"mainline\" is treated as the parent. "},{"type":"git_merge_options","name":"merge_opts","comments":" Options for the merging "},{"type":"git_checkout_options","name":"checkout_opts","comments":" Options for the checkout "}],"used":{"returns":[],"needs":["git_revert","git_revert_init_options"]}}],["git_revparse_mode_t",{"decl":["GIT_REVPARSE_SINGLE","GIT_REVPARSE_RANGE","GIT_REVPARSE_MERGE_BASE"],"type":"enum","file":"revparse.h","line":71,"lineto":78,"block":"GIT_REVPARSE_SINGLE\nGIT_REVPARSE_RANGE\nGIT_REVPARSE_MERGE_BASE","tdef":"typedef","description":" Revparse flags.  These indicate the intended behavior of the spec passed to\n git_revparse.","comments":"","fields":[{"type":"int","name":"GIT_REVPARSE_SINGLE","comments":"<p>The spec targeted a single object. </p>\n","value":1},{"type":"int","name":"GIT_REVPARSE_RANGE","comments":"<p>The spec targeted a range of commits. </p>\n","value":2},{"type":"int","name":"GIT_REVPARSE_MERGE_BASE","comments":"<p>The spec used the &#39;...&#39; operator, which invokes special semantics. </p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_revspec",{"decl":["git_object * from","git_object * to","unsigned int flags"],"type":"struct","value":"git_revspec","file":"revparse.h","line":83,"lineto":90,"block":"git_object * from\ngit_object * to\nunsigned int flags","tdef":"typedef","description":" Git Revision Spec: output of a `git_revparse` operation","comments":"","fields":[{"type":"git_object *","name":"from","comments":" The left element of the revspec; must be freed by the user "},{"type":"git_object *","name":"to","comments":" The right element of the revspec; must be freed by the user "},{"type":"unsigned int","name":"flags","comments":" The intent of the revspec (i.e. `git_revparse_mode_t` flags) "}],"used":{"returns":[],"needs":["git_revparse"]}}],["git_revwalk",{"decl":"git_revwalk","type":"struct","value":"git_revwalk","file":"types.h","line":111,"lineto":111,"tdef":"typedef","description":" Representation of an in-progress walk through the commits in a repo ","comments":"","used":{"returns":[],"needs":["git_packbuilder_insert_walk","git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]}}],["git_signature",{"decl":["char * name","char * email","git_time when"],"type":"struct","value":"git_signature","file":"types.h","line":162,"lineto":166,"block":"char * name\nchar * email\ngit_time when","tdef":"typedef","description":" An action signature (e.g. for committers, taggers, etc) ","comments":"","fields":[{"type":"char *","name":"name","comments":" full name of the author "},{"type":"char *","name":"email","comments":" email of the author "},{"type":"git_time","name":"when","comments":" time when the action happened "}],"used":{"returns":["git_commit_author","git_commit_committer","git_note_author","git_note_committer","git_reflog_entry_committer","git_tag_tagger"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_note_create","git_note_remove","git_rebase_commit","git_rebase_finish","git_reflog_append","git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now","git_tag_annotation_create","git_tag_create"]}}],["git_smart_subtransport_definition",{"decl":["git_smart_subtransport_cb callback","unsigned int rpc","void * param"],"type":"struct","value":"git_smart_subtransport_definition","file":"sys/transport.h","line":326,"lineto":339,"block":"git_smart_subtransport_cb callback\nunsigned int rpc\nvoid * param","tdef":"typedef","description":" Definition for a \"subtransport\"","comments":"<p>This is used to let the smart protocol code know about the protocol which you are implementing.</p>\n","fields":[{"type":"git_smart_subtransport_cb","name":"callback","comments":" The function to use to create the git_smart_subtransport "},{"type":"unsigned int","name":"rpc","comments":" True if the protocol is stateless; false otherwise. For example,\n http:// is stateless, but git:// is not."},{"type":"void *","name":"param","comments":" Param of the callback"}],"used":{"returns":[],"needs":[]}}],["git_sort_t",{"decl":["GIT_SORT_NONE","GIT_SORT_TOPOLOGICAL","GIT_SORT_TIME","GIT_SORT_REVERSE"],"type":"enum","file":"revwalk.h","line":26,"lineto":53,"block":"GIT_SORT_NONE\nGIT_SORT_TOPOLOGICAL\nGIT_SORT_TIME\nGIT_SORT_REVERSE","tdef":"typedef","description":" Flags to specify the sorting which a revwalk should perform.","comments":"","fields":[{"type":"int","name":"GIT_SORT_NONE","comments":"<p>Sort the output with the same default time-order method from git.\n This is the default sorting for new walkers.</p>\n","value":0},{"type":"int","name":"GIT_SORT_TOPOLOGICAL","comments":"<p>Sort the repository contents in topological order (parents before\n children); this sorting mode can be combined with time sorting to\n produce git&#39;s &quot;time-order&quot;.</p>\n","value":1},{"type":"int","name":"GIT_SORT_TIME","comments":"<p>Sort the repository contents by commit time;\n this sorting mode can be combined with\n topological sorting.</p>\n","value":2},{"type":"int","name":"GIT_SORT_REVERSE","comments":"<p>Iterate through the repository contents in reverse\n order; this sorting mode can be combined with\n any of the above.</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_stash_apply_flags",{"decl":["GIT_STASH_APPLY_DEFAULT","GIT_STASH_APPLY_REINSTATE_INDEX"],"type":"enum","file":"stash.h","line":74,"lineto":81,"block":"GIT_STASH_APPLY_DEFAULT\nGIT_STASH_APPLY_REINSTATE_INDEX","tdef":"typedef","description":" Stash application flags. ","comments":"","fields":[{"type":"int","name":"GIT_STASH_APPLY_DEFAULT","comments":"","value":0},{"type":"int","name":"GIT_STASH_APPLY_REINSTATE_INDEX","comments":"","value":1}],"used":{"returns":[],"needs":[]}}],["git_stash_flags",{"decl":["GIT_STASH_DEFAULT","GIT_STASH_KEEP_INDEX","GIT_STASH_INCLUDE_UNTRACKED","GIT_STASH_INCLUDE_IGNORED"],"type":"enum","file":"stash.h","line":24,"lineto":47,"block":"GIT_STASH_DEFAULT\nGIT_STASH_KEEP_INDEX\nGIT_STASH_INCLUDE_UNTRACKED\nGIT_STASH_INCLUDE_IGNORED","tdef":"typedef","description":" Stash flags","comments":"","fields":[{"type":"int","name":"GIT_STASH_DEFAULT","comments":"<p>No option, default</p>\n","value":0},{"type":"int","name":"GIT_STASH_KEEP_INDEX","comments":"<p>All changes already added to the index are left intact in\n the working directory</p>\n","value":1},{"type":"int","name":"GIT_STASH_INCLUDE_UNTRACKED","comments":"<p>All untracked files are also stashed and then cleaned up\n from the working directory</p>\n","value":2},{"type":"int","name":"GIT_STASH_INCLUDE_IGNORED","comments":"<p>All ignored files are also stashed and then cleaned up from\n the working directory</p>\n","value":4}],"used":{"returns":[],"needs":[]}}],["git_status_list",{"decl":"git_status_list","type":"struct","value":"git_status_list","file":"types.h","line":184,"lineto":184,"tdef":"typedef","description":" Representation of a status collection ","comments":"","used":{"returns":[],"needs":["git_status_byindex","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new"]}}],["git_status_opt_t",{"decl":["GIT_STATUS_OPT_INCLUDE_UNTRACKED","GIT_STATUS_OPT_INCLUDE_IGNORED","GIT_STATUS_OPT_INCLUDE_UNMODIFIED","GIT_STATUS_OPT_EXCLUDE_SUBMODULES","GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","GIT_STATUS_OPT_RENAMES_FROM_REWRITES","GIT_STATUS_OPT_NO_REFRESH","GIT_STATUS_OPT_UPDATE_INDEX","GIT_STATUS_OPT_INCLUDE_UNREADABLE","GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED"],"type":"enum","file":"status.h","line":137,"lineto":154,"block":"GIT_STATUS_OPT_INCLUDE_UNTRACKED\nGIT_STATUS_OPT_INCLUDE_IGNORED\nGIT_STATUS_OPT_INCLUDE_UNMODIFIED\nGIT_STATUS_OPT_EXCLUDE_SUBMODULES\nGIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS\nGIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH\nGIT_STATUS_OPT_RECURSE_IGNORED_DIRS\nGIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX\nGIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR\nGIT_STATUS_OPT_SORT_CASE_SENSITIVELY\nGIT_STATUS_OPT_SORT_CASE_INSENSITIVELY\nGIT_STATUS_OPT_RENAMES_FROM_REWRITES\nGIT_STATUS_OPT_NO_REFRESH\nGIT_STATUS_OPT_UPDATE_INDEX\nGIT_STATUS_OPT_INCLUDE_UNREADABLE\nGIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","tdef":"typedef","description":" Flags to control status callbacks","comments":"<ul>\n<li>GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made   on untracked files.  These will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files get callbacks.   Again, these callbacks will only be made if the workdir files are   included in the status &quot;show&quot; option. - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be   made even on unmodified files. - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that submodules should be   skipped.  This only applies if there are no pending typechanges to   the submodule (either from or to another type). - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that all files in   untracked directories should be included.  Normally if an entire   directory is new, then just the top-level directory is included (with   a trailing slash on the entry name).  This flag says to include all   of the individual files in the directory instead. - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path   should be treated as a literal path, and not as a pathspec pattern. - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of   ignored directories should be included in the status.  This is like   doing <code>git ls-files -o -i --exclude-standard</code> with core git. - GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX indicates that rename detection   should be processed between the head and the index and enables   the GIT_STATUS_INDEX_RENAMED as a possible status flag. - GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR indicates that rename   detection should be run between the index and the working directory   and enabled GIT_STATUS_WT_RENAMED as a possible status flag. - GIT_STATUS_OPT_SORT_CASE_SENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-sensitive order - GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY overrides the native case   sensitivity for the file system and forces the output to be in   case-insensitive order - GIT_STATUS_OPT_RENAMES_FROM_REWRITES indicates that rename detection   should include rewritten files - GIT_STATUS_OPT_NO_REFRESH bypasses the default status behavior of   doing a &quot;soft&quot; index reload (i.e. reloading the index data if the   file on disk has been modified outside libgit2). - GIT_STATUS_OPT_UPDATE_INDEX tells libgit2 to refresh the stat cache   in the index for files that are unchanged but have out of date stat   information in the index.  It will result in less work being done on   subsequent calls to get status.  This is mutually exclusive with the   NO_REFRESH option.</li>\n</ul>\n\n<p>Calling <code>git_status_foreach()</code> is like calling the extended version with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED, and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS.  Those options are bundled together as <code>GIT_STATUS_OPT_DEFAULTS</code> if you want them as a baseline.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNTRACKED","comments":"","value":1},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_IGNORED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNMODIFIED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_OPT_EXCLUDE_SUBMODULES","comments":"","value":8},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS","comments":"","value":16},{"type":"int","name":"GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH","comments":"","value":32},{"type":"int","name":"GIT_STATUS_OPT_RECURSE_IGNORED_DIRS","comments":"","value":64},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX","comments":"","value":128},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR","comments":"","value":256},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_SENSITIVELY","comments":"","value":512},{"type":"int","name":"GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_OPT_RENAMES_FROM_REWRITES","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_OPT_NO_REFRESH","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_OPT_UPDATE_INDEX","comments":"","value":8192},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_OPT_INCLUDE_UNREADABLE_AS_UNTRACKED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_status_show_t",{"decl":["GIT_STATUS_SHOW_INDEX_AND_WORKDIR","GIT_STATUS_SHOW_INDEX_ONLY","GIT_STATUS_SHOW_WORKDIR_ONLY"],"type":"enum","file":"status.h","line":79,"lineto":83,"block":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR\nGIT_STATUS_SHOW_INDEX_ONLY\nGIT_STATUS_SHOW_WORKDIR_ONLY","tdef":"typedef","description":" Select the files on which to report status.","comments":"<p>With <code>git_status_foreach_ext</code>, this will control which changes get callbacks.  With <code>git_status_list_new</code>, these will control which changes are included in the list.</p>\n\n<ul>\n<li>GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default.  This roughly   matches <code>git status --porcelain</code> regarding which files are   included and in what order. - GIT_STATUS_SHOW_INDEX_ONLY only gives status based on HEAD to index   comparison, not looking at working directory changes. - GIT_STATUS_SHOW_WORKDIR_ONLY only gives status based on index to   working directory comparison, not comparing the index to the HEAD.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_STATUS_SHOW_INDEX_AND_WORKDIR","comments":"","value":0},{"type":"int","name":"GIT_STATUS_SHOW_INDEX_ONLY","comments":"","value":1},{"type":"int","name":"GIT_STATUS_SHOW_WORKDIR_ONLY","comments":"","value":2}],"used":{"returns":[],"needs":[]}}],["git_status_t",{"decl":["GIT_STATUS_CURRENT","GIT_STATUS_INDEX_NEW","GIT_STATUS_INDEX_MODIFIED","GIT_STATUS_INDEX_DELETED","GIT_STATUS_INDEX_RENAMED","GIT_STATUS_INDEX_TYPECHANGE","GIT_STATUS_WT_NEW","GIT_STATUS_WT_MODIFIED","GIT_STATUS_WT_DELETED","GIT_STATUS_WT_TYPECHANGE","GIT_STATUS_WT_RENAMED","GIT_STATUS_WT_UNREADABLE","GIT_STATUS_IGNORED","GIT_STATUS_CONFLICTED"],"type":"enum","file":"status.h","line":32,"lineto":50,"block":"GIT_STATUS_CURRENT\nGIT_STATUS_INDEX_NEW\nGIT_STATUS_INDEX_MODIFIED\nGIT_STATUS_INDEX_DELETED\nGIT_STATUS_INDEX_RENAMED\nGIT_STATUS_INDEX_TYPECHANGE\nGIT_STATUS_WT_NEW\nGIT_STATUS_WT_MODIFIED\nGIT_STATUS_WT_DELETED\nGIT_STATUS_WT_TYPECHANGE\nGIT_STATUS_WT_RENAMED\nGIT_STATUS_WT_UNREADABLE\nGIT_STATUS_IGNORED\nGIT_STATUS_CONFLICTED","tdef":"typedef","description":" Status flags for a single file.","comments":"<p>A combination of these values will be returned to indicate the status of a file.  Status compares the working directory, the index, and the current HEAD of the repository.  The <code>GIT_STATUS_INDEX</code> set of flags represents the status of file in the index relative to the HEAD, and the <code>GIT_STATUS_WT</code> set of flags represent the status of the file in the working directory relative to the index.</p>\n","fields":[{"type":"int","name":"GIT_STATUS_CURRENT","comments":"","value":0},{"type":"int","name":"GIT_STATUS_INDEX_NEW","comments":"","value":1},{"type":"int","name":"GIT_STATUS_INDEX_MODIFIED","comments":"","value":2},{"type":"int","name":"GIT_STATUS_INDEX_DELETED","comments":"","value":4},{"type":"int","name":"GIT_STATUS_INDEX_RENAMED","comments":"","value":8},{"type":"int","name":"GIT_STATUS_INDEX_TYPECHANGE","comments":"","value":16},{"type":"int","name":"GIT_STATUS_WT_NEW","comments":"","value":128},{"type":"int","name":"GIT_STATUS_WT_MODIFIED","comments":"","value":256},{"type":"int","name":"GIT_STATUS_WT_DELETED","comments":"","value":512},{"type":"int","name":"GIT_STATUS_WT_TYPECHANGE","comments":"","value":1024},{"type":"int","name":"GIT_STATUS_WT_RENAMED","comments":"","value":2048},{"type":"int","name":"GIT_STATUS_WT_UNREADABLE","comments":"","value":4096},{"type":"int","name":"GIT_STATUS_IGNORED","comments":"","value":16384},{"type":"int","name":"GIT_STATUS_CONFLICTED","comments":"","value":32768}],"used":{"returns":[],"needs":[]}}],["git_strarray",{"decl":["char ** strings","size_t count"],"type":"struct","value":"git_strarray","file":"strarray.h","line":22,"lineto":25,"block":"char ** strings\nsize_t count","tdef":"typedef","description":" Array of strings ","comments":"","fields":[{"type":"char **","name":"strings","comments":""},{"type":"size_t","name":"count","comments":""}],"used":{"returns":[],"needs":["git_index_add_all","git_index_remove_all","git_index_update_all","git_pathspec_new","git_reference_list","git_remote_connect","git_remote_download","git_remote_fetch","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_list","git_remote_push","git_remote_rename","git_remote_upload","git_reset_default","git_strarray_copy","git_strarray_free","git_tag_list","git_tag_list_match"]}}],["git_stream",{"decl":["int version","int encrypted","int proxy_support","int (*)(struct git_stream *) connect","int (*)(git_cert **, struct git_stream *) certificate","int (*)(struct git_stream *, const int *) set_proxy","ssize_t (*)(struct git_stream *, void *, size_t) read","ssize_t (*)(struct git_stream *, const char *, size_t, int) write","int (*)(struct git_stream *) close","void (*)(struct git_stream *) free"],"type":"struct","value":"git_stream","file":"sys/stream.h","line":29,"lineto":41,"block":"int version\nint encrypted\nint proxy_support\nint (*)(struct git_stream *) connect\nint (*)(git_cert **, struct git_stream *) certificate\nint (*)(struct git_stream *, const int *) set_proxy\nssize_t (*)(struct git_stream *, void *, size_t) read\nssize_t (*)(struct git_stream *, const char *, size_t, int) write\nint (*)(struct git_stream *) close\nvoid (*)(struct git_stream *) free","tdef":"typedef","description":" Every stream must have this struct as its first element, so the\n API can talk to it. You'd define your stream as","comments":"<pre><code> struct my_stream {             git_stream parent;             ...     }\n</code></pre>\n\n<p>and fill the functions</p>\n","fields":[{"type":"int","name":"version","comments":""},{"type":"int","name":"encrypted","comments":""},{"type":"int","name":"proxy_support","comments":""},{"type":"int (*)(struct git_stream *)","name":"connect","comments":""},{"type":"int (*)(git_cert **, struct git_stream *)","name":"certificate","comments":""},{"type":"int (*)(struct git_stream *, const int *)","name":"set_proxy","comments":""},{"type":"ssize_t (*)(struct git_stream *, void *, size_t)","name":"read","comments":""},{"type":"ssize_t (*)(struct git_stream *, const char *, size_t, int)","name":"write","comments":""},{"type":"int (*)(struct git_stream *)","name":"close","comments":""},{"type":"void (*)(struct git_stream *)","name":"free","comments":""}],"used":{"returns":[],"needs":["git_stream_register_tls"]}}],["git_submodule",{"decl":"git_submodule","type":"struct","value":"git_submodule","file":"types.h","line":335,"lineto":335,"tdef":"typedef","description":" Opaque structure representing a submodule.","comments":"","used":{"returns":["git_submodule_fetch_recurse_submodules","git_submodule_ignore","git_submodule_update_strategy"],"needs":["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_cb","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]}}],["git_submodule_ignore_t",{"decl":["GIT_SUBMODULE_IGNORE_UNSPECIFIED","GIT_SUBMODULE_IGNORE_NONE","GIT_SUBMODULE_IGNORE_UNTRACKED","GIT_SUBMODULE_IGNORE_DIRTY","GIT_SUBMODULE_IGNORE_ALL"],"type":"enum","file":"types.h","line":399,"lineto":406,"block":"GIT_SUBMODULE_IGNORE_UNSPECIFIED\nGIT_SUBMODULE_IGNORE_NONE\nGIT_SUBMODULE_IGNORE_UNTRACKED\nGIT_SUBMODULE_IGNORE_DIRTY\nGIT_SUBMODULE_IGNORE_ALL","tdef":"typedef","description":" Submodule ignore values","comments":"<p>These values represent settings for the <code>submodule.$name.ignore</code> configuration value which says how deeply to look at the working directory when getting submodule status.</p>\n\n<p>You can override this value in memory on a per-submodule basis with <code>git_submodule_set_ignore()</code> and can write the changed value to disk with <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert to the on disk value by using <code>GIT_SUBMODULE_IGNORE_RESET</code>.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule&#39;s configuration - GIT_SUBMODULE_IGNORE_NONE: don&#39;t ignore any change - i.e. even an   untracked file, will mark the submodule as dirty.  Ignored files are   still ignored, of course. - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes   to tracked files, or the index or the HEAD commit will matter. - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,   only considering changes if the HEAD of submodule has moved from the   value in the superproject. - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular ignore rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNSPECIFIED","comments":"<p>use the submodule&#39;s configuration </p>\n","value":-1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_NONE","comments":"<p>any change or untracked == dirty </p>\n","value":1},{"type":"int","name":"GIT_SUBMODULE_IGNORE_UNTRACKED","comments":"<p>dirty if tracked files change </p>\n","value":2},{"type":"int","name":"GIT_SUBMODULE_IGNORE_DIRTY","comments":"<p>only dirty if HEAD moved </p>\n","value":3},{"type":"int","name":"GIT_SUBMODULE_IGNORE_ALL","comments":"<p>never dirty </p>\n","value":4}],"used":{"returns":["git_submodule_ignore"],"needs":["git_submodule_set_ignore","git_submodule_status"]}}],["git_submodule_recurse_t",{"decl":["GIT_SUBMODULE_RECURSE_NO","GIT_SUBMODULE_RECURSE_YES","GIT_SUBMODULE_RECURSE_ONDEMAND"],"type":"enum","file":"types.h","line":418,"lineto":422,"block":"GIT_SUBMODULE_RECURSE_NO\nGIT_SUBMODULE_RECURSE_YES\nGIT_SUBMODULE_RECURSE_ONDEMAND","tdef":"typedef","description":" Options for submodule recurse.","comments":"<p>Represent the value of <code>submodule.$name.fetchRecurseSubmodules</code></p>\n\n<ul>\n<li>GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when                                    commit not already in local clone</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_RECURSE_NO","comments":"","value":0},{"type":"int","name":"GIT_SUBMODULE_RECURSE_YES","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_RECURSE_ONDEMAND","comments":"","value":2}],"used":{"returns":["git_submodule_fetch_recurse_submodules"],"needs":["git_submodule_set_fetch_recurse_submodules"]}}],["git_submodule_status_t",{"decl":["GIT_SUBMODULE_STATUS_IN_HEAD","GIT_SUBMODULE_STATUS_IN_INDEX","GIT_SUBMODULE_STATUS_IN_CONFIG","GIT_SUBMODULE_STATUS_IN_WD","GIT_SUBMODULE_STATUS_INDEX_ADDED","GIT_SUBMODULE_STATUS_INDEX_DELETED","GIT_SUBMODULE_STATUS_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","GIT_SUBMODULE_STATUS_WD_ADDED","GIT_SUBMODULE_STATUS_WD_DELETED","GIT_SUBMODULE_STATUS_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","GIT_SUBMODULE_STATUS_WD_UNTRACKED"],"type":"enum","file":"submodule.h","line":74,"lineto":89,"block":"GIT_SUBMODULE_STATUS_IN_HEAD\nGIT_SUBMODULE_STATUS_IN_INDEX\nGIT_SUBMODULE_STATUS_IN_CONFIG\nGIT_SUBMODULE_STATUS_IN_WD\nGIT_SUBMODULE_STATUS_INDEX_ADDED\nGIT_SUBMODULE_STATUS_INDEX_DELETED\nGIT_SUBMODULE_STATUS_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNINITIALIZED\nGIT_SUBMODULE_STATUS_WD_ADDED\nGIT_SUBMODULE_STATUS_WD_DELETED\nGIT_SUBMODULE_STATUS_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED\nGIT_SUBMODULE_STATUS_WD_WD_MODIFIED\nGIT_SUBMODULE_STATUS_WD_UNTRACKED","tdef":"typedef","description":" Return codes for submodule status.","comments":"<p>A combination of these flags will be returned to describe the status of a submodule.  Depending on the &quot;ignore&quot; property of the submodule, some of the flags may never be returned because they indicate changes that are supposed to be ignored.</p>\n\n<p>Submodule info is contained in 4 places: the HEAD tree, the index, config files (both .git/config and .gitmodules), and the working directory.  Any or all of those places might be missing information about the submodule depending on what state the repo is in.  We consider all four places to build the combination of status flags.</p>\n\n<p>There are four values that are not really status, but give basic info about what sources of submodule data are available.  These will be returned even if ignore is set to &quot;ALL&quot;.</p>\n\n<ul>\n<li>IN_HEAD   - superproject head contains submodule * IN_INDEX  - superproject index contains submodule * IN_CONFIG - superproject gitmodules has submodule * IN_WD     - superproject workdir has submodule</li>\n</ul>\n\n<p>The following values will be returned so long as ignore is not &quot;ALL&quot;.</p>\n\n<ul>\n<li>INDEX_ADDED       - in index, not in head * INDEX_DELETED     - in head, not in index * INDEX_MODIFIED    - index and head don&#39;t match * WD_UNINITIALIZED  - workdir contains empty directory * WD_ADDED          - in workdir, not index * WD_DELETED        - in index, not workdir * WD_MODIFIED       - index and workdir head don&#39;t match</li>\n</ul>\n\n<p>The following can only be returned if ignore is &quot;NONE&quot; or &quot;UNTRACKED&quot;.</p>\n\n<ul>\n<li>WD_INDEX_MODIFIED - submodule workdir index is dirty * WD_WD_MODIFIED    - submodule workdir has modified files</li>\n</ul>\n\n<p>Lastly, the following will only be returned for ignore &quot;NONE&quot;.</p>\n\n<ul>\n<li>WD_UNTRACKED      - wd contains untracked files</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_HEAD","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_INDEX","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_CONFIG","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_STATUS_IN_WD","comments":"","value":8},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_ADDED","comments":"","value":16},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_DELETED","comments":"","value":32},{"type":"int","name":"GIT_SUBMODULE_STATUS_INDEX_MODIFIED","comments":"","value":64},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNINITIALIZED","comments":"","value":128},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_ADDED","comments":"","value":256},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_DELETED","comments":"","value":512},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_MODIFIED","comments":"","value":1024},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED","comments":"","value":2048},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_WD_MODIFIED","comments":"","value":4096},{"type":"int","name":"GIT_SUBMODULE_STATUS_WD_UNTRACKED","comments":"","value":8192}],"used":{"returns":[],"needs":[]}}],["git_submodule_update_options",{"decl":["unsigned int version","git_checkout_options checkout_opts","git_fetch_options fetch_opts","unsigned int clone_checkout_strategy","int allow_fetch"],"type":"struct","value":"git_submodule_update_options","file":"submodule.h","line":129,"lineto":163,"block":"unsigned int version\ngit_checkout_options checkout_opts\ngit_fetch_options fetch_opts\nunsigned int clone_checkout_strategy\nint allow_fetch","tdef":"typedef","description":" Submodule update options structure","comments":"<p>Use the GIT_SUBMODULE_UPDATE_OPTIONS_INIT to get the default settings, like this:</p>\n\n<p>git_submodule_update_options opts = GIT_SUBMODULE_UPDATE_OPTIONS_INIT;</p>\n","fields":[{"type":"unsigned int","name":"version","comments":""},{"type":"git_checkout_options","name":"checkout_opts","comments":" These options are passed to the checkout step. To disable\n checkout, set the `checkout_strategy` to\n `GIT_CHECKOUT_NONE`. Generally you will want the use\n GIT_CHECKOUT_SAFE to update files in the working\n directory. Use the `clone_checkout_strategy` field\n to set the checkout strategy that will be used in\n the case where update needs to clone the repository."},{"type":"git_fetch_options","name":"fetch_opts","comments":" Options which control the fetch, including callbacks.\n\n The callbacks to use for reporting fetch progress, and for acquiring\n credentials in the event they are needed."},{"type":"unsigned int","name":"clone_checkout_strategy","comments":" The checkout strategy to use when the sub repository needs to\n be cloned. Use GIT_CHECKOUT_SAFE to create all files\n in the working directory for the newly cloned repository."},{"type":"int","name":"allow_fetch","comments":" Allow fetching from the submodule's default remote if the target\n commit isn't found. Enabled by default."}],"used":{"returns":[],"needs":["git_submodule_update","git_submodule_update_init_options"]}}],["git_submodule_update_t",{"decl":["GIT_SUBMODULE_UPDATE_CHECKOUT","GIT_SUBMODULE_UPDATE_REBASE","GIT_SUBMODULE_UPDATE_MERGE","GIT_SUBMODULE_UPDATE_NONE","GIT_SUBMODULE_UPDATE_DEFAULT"],"type":"enum","file":"types.h","line":363,"lineto":370,"block":"GIT_SUBMODULE_UPDATE_CHECKOUT\nGIT_SUBMODULE_UPDATE_REBASE\nGIT_SUBMODULE_UPDATE_MERGE\nGIT_SUBMODULE_UPDATE_NONE\nGIT_SUBMODULE_UPDATE_DEFAULT","tdef":"typedef","description":" Submodule update values","comments":"<p>These values represent settings for the <code>submodule.$name.update</code> configuration value which says how to handle <code>git submodule update</code> for this submodule.  The value is usually set in the &quot;.gitmodules&quot; file and copied to &quot;.git/config&quot; when the submodule is initialized.</p>\n\n<p>You can override this setting on a per-submodule basis with <code>git_submodule_set_update()</code> and write the changed value to disk using <code>git_submodule_save()</code>.  If you have overwritten the value, you can revert it by passing <code>GIT_SUBMODULE_UPDATE_RESET</code> to the set function.</p>\n\n<p>The values are:</p>\n\n<ul>\n<li>GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is   updated, checkout the new detached HEAD to the submodule directory. - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked   out branch onto the commit from the superproject. - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the   superproject into the current checkout out branch of the submodule. - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when   the commit in the superproject is updated. - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer   when we don&#39;t want any particular update rule to be specified.</li>\n</ul>\n","fields":[{"type":"int","name":"GIT_SUBMODULE_UPDATE_CHECKOUT","comments":"","value":1},{"type":"int","name":"GIT_SUBMODULE_UPDATE_REBASE","comments":"","value":2},{"type":"int","name":"GIT_SUBMODULE_UPDATE_MERGE","comments":"","value":3},{"type":"int","name":"GIT_SUBMODULE_UPDATE_NONE","comments":"","value":4},{"type":"int","name":"GIT_SUBMODULE_UPDATE_DEFAULT","comments":"","value":0}],"used":{"returns":["git_submodule_update_strategy"],"needs":["git_submodule_set_update"]}}],["git_tag",{"decl":"git_tag","type":"struct","value":"git_tag","file":"types.h","line":114,"lineto":114,"tdef":"typedef","description":" Parsed representation of a tag object. ","comments":"","used":{"returns":[],"needs":["git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]}}],["git_time",{"decl":["git_time_t time","int offset"],"type":"struct","value":"git_time","file":"types.h","line":156,"lineto":159,"block":"git_time_t time\nint offset","tdef":"typedef","description":" Time in a signature ","comments":"","fields":[{"type":"git_time_t","name":"time","comments":" time in seconds from epoch "},{"type":"int","name":"offset","comments":" timezone offset, in minutes "}],"used":{"returns":["git_commit_time"],"needs":["git_signature_new"]}}],["git_trace_level_t",{"decl":["GIT_TRACE_NONE","GIT_TRACE_FATAL","GIT_TRACE_ERROR","GIT_TRACE_WARN","GIT_TRACE_INFO","GIT_TRACE_DEBUG","GIT_TRACE_TRACE"],"type":"enum","file":"trace.h","line":26,"lineto":47,"block":"GIT_TRACE_NONE\nGIT_TRACE_FATAL\nGIT_TRACE_ERROR\nGIT_TRACE_WARN\nGIT_TRACE_INFO\nGIT_TRACE_DEBUG\nGIT_TRACE_TRACE","tdef":"typedef","description":" Available tracing levels.  When tracing is set to a particular level,\n callers will be provided tracing at the given level and all lower levels.","comments":"","fields":[{"type":"int","name":"GIT_TRACE_NONE","comments":"<p>No tracing will be performed. </p>\n","value":0},{"type":"int","name":"GIT_TRACE_FATAL","comments":"<p>Severe errors that may impact the program&#39;s execution </p>\n","value":1},{"type":"int","name":"GIT_TRACE_ERROR","comments":"<p>Errors that do not impact the program&#39;s execution </p>\n","value":2},{"type":"int","name":"GIT_TRACE_WARN","comments":"<p>Warnings that suggest abnormal data </p>\n","value":3},{"type":"int","name":"GIT_TRACE_INFO","comments":"<p>Informational messages about program execution </p>\n","value":4},{"type":"int","name":"GIT_TRACE_DEBUG","comments":"<p>Detailed data that allows for debugging </p>\n","value":5},{"type":"int","name":"GIT_TRACE_TRACE","comments":"<p>Exceptionally detailed debugging data </p>\n","value":6}],"used":{"returns":[],"needs":["git_trace_callback","git_trace_set"]}}],["git_transaction",{"decl":"git_transaction","type":"struct","value":"git_transaction","file":"types.h","line":175,"lineto":175,"tdef":"typedef","description":" Transactional interface to references ","comments":"","used":{"returns":[],"needs":["git_config_lock"]}}],["git_transfer_progress",{"decl":["unsigned int total_objects","unsigned int indexed_objects","unsigned int received_objects","unsigned int local_objects","unsigned int total_deltas","unsigned int indexed_deltas","size_t received_bytes"],"type":"struct","value":"git_transfer_progress","file":"types.h","line":253,"lineto":261,"block":"unsigned int total_objects\nunsigned int indexed_objects\nunsigned int received_objects\nunsigned int local_objects\nunsigned int total_deltas\nunsigned int indexed_deltas\nsize_t received_bytes","tdef":"typedef","description":" This is passed as the first argument to the callback to allow the\n user to see the progress.","comments":"<ul>\n<li>total_objects: number of objects in the packfile being downloaded - indexed_objects: received objects that have been hashed - received_objects: objects which have been downloaded - local_objects: locally-available objects that have been injected    in order to fix a thin pack. - received-bytes: size of the packfile received up to now</li>\n</ul>\n","fields":[{"type":"unsigned int","name":"total_objects","comments":""},{"type":"unsigned int","name":"indexed_objects","comments":""},{"type":"unsigned int","name":"received_objects","comments":""},{"type":"unsigned int","name":"local_objects","comments":""},{"type":"unsigned int","name":"total_deltas","comments":""},{"type":"unsigned int","name":"indexed_deltas","comments":""},{"type":"size_t","name":"received_bytes","comments":""}],"used":{"returns":["git_remote_stats"],"needs":["git_indexer_append","git_indexer_commit","git_indexer_new","git_odb_write_pack","git_packbuilder_write","git_transfer_progress_cb"]}}],["git_transport",{"decl":"git_transport","type":"struct","value":"git_transport","file":"types.h","line":230,"lineto":230,"tdef":"typedef","description":" Interface which represents a transport to communicate with a\n remote.","comments":"","used":{"returns":[],"needs":["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh","git_transport_cb","git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths"]}}],["git_transport_flags_t",{"decl":["GIT_TRANSPORTFLAGS_NONE"],"type":"enum","file":"sys/transport.h","line":31,"lineto":33,"block":"GIT_TRANSPORTFLAGS_NONE","tdef":"typedef","description":" Flags to pass to transport","comments":"<p>Currently unused.</p>\n","fields":[{"type":"int","name":"GIT_TRANSPORTFLAGS_NONE","comments":"","value":0}],"used":{"returns":[],"needs":[]}}],["git_tree",{"decl":"git_tree","type":"struct","value":"git_tree","file":"types.h","line":126,"lineto":126,"tdef":"typedef","description":" Representation of a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_commit_amend","git_commit_create","git_commit_create_buffer","git_commit_create_v","git_commit_tree","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index","git_index_read_tree","git_merge_trees","git_pathspec_match_tree","git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk","git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_filter_cb","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write","git_treewalk_cb"]}}],["git_tree_entry",{"decl":"git_tree_entry","type":"struct","value":"git_tree_entry","file":"types.h","line":123,"lineto":123,"tdef":"typedef","description":" Representation of each one of the entries in a tree object. ","comments":"","used":{"returns":["git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_treebuilder_get"],"needs":["git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_treebuilder_filter_cb","git_treebuilder_insert","git_treewalk_cb"]}}],["git_tree_update",{"decl":["git_tree_update_t action","git_oid id","git_filemode_t filemode","const char * path"],"type":"struct","value":"git_tree_update","file":"tree.h","line":434,"lineto":443,"block":"git_tree_update_t action\ngit_oid id\ngit_filemode_t filemode\nconst char * path","tdef":"typedef","description":" An action to perform during the update of a tree","comments":"","fields":[{"type":"git_tree_update_t","name":"action","comments":" Update action. If it's an removal, only the path is looked at "},{"type":"git_oid","name":"id","comments":" The entry's id "},{"type":"git_filemode_t","name":"filemode","comments":" The filemode/kind of object "},{"type":"const char *","name":"path","comments":" The full path from the root tree "}],"used":{"returns":[],"needs":["git_tree_create_updated"]}}],["git_tree_update_t",{"decl":["GIT_TREE_UPDATE_UPSERT","GIT_TREE_UPDATE_REMOVE"],"type":"enum","file":"tree.h","line":424,"lineto":429,"block":"GIT_TREE_UPDATE_UPSERT\nGIT_TREE_UPDATE_REMOVE","tdef":"typedef","description":" The kind of update to perform","comments":"","fields":[{"type":"int","name":"GIT_TREE_UPDATE_UPSERT","comments":"<p>Update or insert an entry at the specified path </p>\n","value":0},{"type":"int","name":"GIT_TREE_UPDATE_REMOVE","comments":"<p>Remove an entry from the specified path </p>\n","value":1}],"used":{"returns":[],"needs":[]}}],["git_treebuilder",{"decl":"git_treebuilder","type":"struct","value":"git_treebuilder","file":"types.h","line":129,"lineto":129,"tdef":"typedef","description":" Constructor for in-memory trees ","comments":"","used":{"returns":[],"needs":["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]}}],["git_treewalk_mode",{"decl":["GIT_TREEWALK_PRE","GIT_TREEWALK_POST"],"type":"enum","file":"tree.h","line":384,"lineto":387,"block":"GIT_TREEWALK_PRE\nGIT_TREEWALK_POST","tdef":"typedef","description":" Tree traversal modes ","comments":"","fields":[{"type":"int","name":"GIT_TREEWALK_PRE","comments":"","value":0},{"type":"int","name":"GIT_TREEWALK_POST","comments":"","value":1}],"used":{"returns":[],"needs":["git_tree_walk"]}}],["git_writestream",{"decl":"git_writestream","type":"struct","value":"git_writestream","file":"types.h","line":425,"lineto":425,"tdef":"typedef","description":" A type to write in a streaming fashion, for example, for filters. ","comments":"","used":{"returns":[],"needs":["git_blob_create_fromstream","git_blob_create_fromstream_commit","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file"]}}]],"prefix":"include/git2","groups":[["annotated",["git_annotated_commit_free","git_annotated_commit_from_fetchhead","git_annotated_commit_from_ref","git_annotated_commit_from_revspec","git_annotated_commit_id","git_annotated_commit_lookup"]],["attr",["git_attr_add_macro","git_attr_cache_flush","git_attr_foreach","git_attr_get","git_attr_get_many","git_attr_value"]],["blame",["git_blame_buffer","git_blame_file","git_blame_free","git_blame_get_hunk_byindex","git_blame_get_hunk_byline","git_blame_get_hunk_count","git_blame_init_options"]],["blob",["git_blob_create_frombuffer","git_blob_create_fromdisk","git_blob_create_fromstream","git_blob_create_fromstream_commit","git_blob_create_fromworkdir","git_blob_dup","git_blob_filtered_content","git_blob_free","git_blob_id","git_blob_is_binary","git_blob_lookup","git_blob_lookup_prefix","git_blob_owner","git_blob_rawcontent","git_blob_rawsize"]],["branch",["git_branch_create","git_branch_create_from_annotated","git_branch_delete","git_branch_is_head","git_branch_iterator_free","git_branch_iterator_new","git_branch_lookup","git_branch_move","git_branch_name","git_branch_next","git_branch_set_upstream","git_branch_upstream"]],["buf",["git_buf_contains_nul","git_buf_free","git_buf_grow","git_buf_is_binary","git_buf_set"]],["checkout",["git_checkout_head","git_checkout_index","git_checkout_init_options","git_checkout_tree"]],["cherrypick",["git_cherrypick","git_cherrypick_commit","git_cherrypick_init_options"]],["clone",["git_clone","git_clone_init_options"]],["commit",["git_commit_amend","git_commit_author","git_commit_body","git_commit_committer","git_commit_create","git_commit_create_buffer","git_commit_create_from_callback","git_commit_create_from_ids","git_commit_create_v","git_commit_create_with_signature","git_commit_dup","git_commit_extract_signature","git_commit_free","git_commit_header_field","git_commit_id","git_commit_lookup","git_commit_lookup_prefix","git_commit_message","git_commit_message_encoding","git_commit_message_raw","git_commit_nth_gen_ancestor","git_commit_owner","git_commit_parent","git_commit_parent_id","git_commit_parentcount","git_commit_raw_header","git_commit_summary","git_commit_time","git_commit_time_offset","git_commit_tree","git_commit_tree_id"]],["config",["git_config_add_backend","git_config_add_file_ondisk","git_config_backend_foreach_match","git_config_delete_entry","git_config_delete_multivar","git_config_entry_free","git_config_find_global","git_config_find_programdata","git_config_find_system","git_config_find_xdg","git_config_foreach","git_config_foreach_match","git_config_free","git_config_get_bool","git_config_get_entry","git_config_get_int32","git_config_get_int64","git_config_get_mapped","git_config_get_multivar_foreach","git_config_get_path","git_config_get_string","git_config_get_string_buf","git_config_init_backend","git_config_iterator_free","git_config_iterator_glob_new","git_config_iterator_new","git_config_lock","git_config_lookup_map_value","git_config_multivar_iterator_new","git_config_new","git_config_next","git_config_open_default","git_config_open_global","git_config_open_level","git_config_open_ondisk","git_config_parse_bool","git_config_parse_int32","git_config_parse_int64","git_config_parse_path","git_config_set_bool","git_config_set_int32","git_config_set_int64","git_config_set_multivar","git_config_set_string","git_config_snapshot"]],["cred",["git_cred_default_new","git_cred_free","git_cred_has_username","git_cred_ssh_custom_new","git_cred_ssh_interactive_new","git_cred_ssh_key_from_agent","git_cred_ssh_key_memory_new","git_cred_ssh_key_new","git_cred_username_new","git_cred_userpass","git_cred_userpass_plaintext_new"]],["describe",["git_describe_commit","git_describe_format","git_describe_result_free","git_describe_workdir"]],["diff",["git_diff_blob_to_buffer","git_diff_blobs","git_diff_buffers","git_diff_commit_as_email","git_diff_find_init_options","git_diff_find_similar","git_diff_foreach","git_diff_format_email","git_diff_format_email_init_options","git_diff_free","git_diff_from_buffer","git_diff_get_delta","git_diff_get_perfdata","git_diff_get_stats","git_diff_index_to_index","git_diff_index_to_workdir","git_diff_init_options","git_diff_is_sorted_icase","git_diff_merge","git_diff_num_deltas","git_diff_num_deltas_of_type","git_diff_print","git_diff_print_callback__to_buf","git_diff_print_callback__to_file_handle","git_diff_stats_deletions","git_diff_stats_files_changed","git_diff_stats_free","git_diff_stats_insertions","git_diff_stats_to_buf","git_diff_status_char","git_diff_to_buf","git_diff_tree_to_index","git_diff_tree_to_tree","git_diff_tree_to_workdir","git_diff_tree_to_workdir_with_index"]],["fetch",["git_fetch_init_options"]],["filter",["git_filter_list_apply_to_blob","git_filter_list_apply_to_data","git_filter_list_apply_to_file","git_filter_list_contains","git_filter_list_free","git_filter_list_length","git_filter_list_load","git_filter_list_new","git_filter_list_push","git_filter_list_stream_blob","git_filter_list_stream_data","git_filter_list_stream_file","git_filter_lookup","git_filter_register","git_filter_source_filemode","git_filter_source_flags","git_filter_source_id","git_filter_source_mode","git_filter_source_path","git_filter_source_repo","git_filter_unregister"]],["giterr",["giterr_clear","giterr_last","giterr_set_oom","giterr_set_str"]],["graph",["git_graph_ahead_behind","git_graph_descendant_of"]],["hashsig",["git_hashsig_compare","git_hashsig_create","git_hashsig_create_fromfile","git_hashsig_free"]],["ignore",["git_ignore_add_rule","git_ignore_clear_internal_rules","git_ignore_path_is_ignored"]],["index",["git_index_add","git_index_add_all","git_index_add_bypath","git_index_add_frombuffer","git_index_caps","git_index_checksum","git_index_clear","git_index_conflict_add","git_index_conflict_cleanup","git_index_conflict_get","git_index_conflict_iterator_free","git_index_conflict_iterator_new","git_index_conflict_next","git_index_conflict_remove","git_index_entry_is_conflict","git_index_entry_stage","git_index_entrycount","git_index_find","git_index_find_prefix","git_index_free","git_index_get_byindex","git_index_get_bypath","git_index_has_conflicts","git_index_new","git_index_open","git_index_owner","git_index_path","git_index_read","git_index_read_tree","git_index_remove","git_index_remove_all","git_index_remove_bypath","git_index_remove_directory","git_index_set_caps","git_index_set_version","git_index_update_all","git_index_version","git_index_write","git_index_write_tree","git_index_write_tree_to"]],["indexer",["git_indexer_append","git_indexer_commit","git_indexer_free","git_indexer_hash","git_indexer_new"]],["libgit2",["git_libgit2_features","git_libgit2_init","git_libgit2_opts","git_libgit2_shutdown","git_libgit2_version"]],["mempack",["git_mempack_new","git_mempack_reset"]],["merge",["git_merge","git_merge_analysis","git_merge_base","git_merge_base_many","git_merge_base_octopus","git_merge_bases","git_merge_bases_many","git_merge_commits","git_merge_file","git_merge_file_from_index","git_merge_file_init_input","git_merge_file_init_options","git_merge_file_result_free","git_merge_init_options","git_merge_trees"]],["message",["git_message_prettify"]],["note",["git_note_author","git_note_committer","git_note_create","git_note_foreach","git_note_free","git_note_id","git_note_iterator_free","git_note_iterator_new","git_note_message","git_note_next","git_note_read","git_note_remove"]],["object",["git_object__size","git_object_dup","git_object_free","git_object_id","git_object_lookup","git_object_lookup_bypath","git_object_lookup_prefix","git_object_owner","git_object_peel","git_object_short_id","git_object_string2type","git_object_type","git_object_type2string","git_object_typeisloose"]],["odb",["git_odb_add_alternate","git_odb_add_backend","git_odb_add_disk_alternate","git_odb_backend_loose","git_odb_backend_one_pack","git_odb_backend_pack","git_odb_exists","git_odb_exists_prefix","git_odb_expand_ids","git_odb_foreach","git_odb_free","git_odb_get_backend","git_odb_hash","git_odb_hashfile","git_odb_init_backend","git_odb_new","git_odb_num_backends","git_odb_object_data","git_odb_object_dup","git_odb_object_free","git_odb_object_id","git_odb_object_size","git_odb_object_type","git_odb_open","git_odb_open_rstream","git_odb_open_wstream","git_odb_read","git_odb_read_header","git_odb_read_prefix","git_odb_refresh","git_odb_stream_finalize_write","git_odb_stream_free","git_odb_stream_read","git_odb_stream_write","git_odb_write","git_odb_write_pack"]],["oid",["git_oid_cmp","git_oid_cpy","git_oid_equal","git_oid_fmt","git_oid_fromraw","git_oid_fromstr","git_oid_fromstrn","git_oid_fromstrp","git_oid_iszero","git_oid_ncmp","git_oid_nfmt","git_oid_pathfmt","git_oid_shorten_add","git_oid_shorten_free","git_oid_shorten_new","git_oid_strcmp","git_oid_streq","git_oid_tostr","git_oid_tostr_s"]],["oidarray",["git_oidarray_free"]],["openssl",["git_openssl_set_locking"]],["packbuilder",["git_packbuilder_foreach","git_packbuilder_free","git_packbuilder_hash","git_packbuilder_insert","git_packbuilder_insert_commit","git_packbuilder_insert_recur","git_packbuilder_insert_tree","git_packbuilder_insert_walk","git_packbuilder_new","git_packbuilder_object_count","git_packbuilder_set_callbacks","git_packbuilder_set_threads","git_packbuilder_write","git_packbuilder_written"]],["patch",["git_patch_free","git_patch_from_blob_and_buffer","git_patch_from_blobs","git_patch_from_buffers","git_patch_from_diff","git_patch_get_delta","git_patch_get_hunk","git_patch_get_line_in_hunk","git_patch_line_stats","git_patch_num_hunks","git_patch_num_lines_in_hunk","git_patch_print","git_patch_size","git_patch_to_buf"]],["pathspec",["git_pathspec_free","git_pathspec_match_diff","git_pathspec_match_index","git_pathspec_match_list_diff_entry","git_pathspec_match_list_entry","git_pathspec_match_list_entrycount","git_pathspec_match_list_failed_entry","git_pathspec_match_list_failed_entrycount","git_pathspec_match_list_free","git_pathspec_match_tree","git_pathspec_match_workdir","git_pathspec_matches_path","git_pathspec_new"]],["proxy",["git_proxy_init_options"]],["push",["git_push_init_options"]],["rebase",["git_rebase_abort","git_rebase_commit","git_rebase_finish","git_rebase_free","git_rebase_init","git_rebase_init_options","git_rebase_inmemory_index","git_rebase_next","git_rebase_open","git_rebase_operation_byindex","git_rebase_operation_current","git_rebase_operation_entrycount"]],["refdb",["git_refdb_backend_fs","git_refdb_compress","git_refdb_free","git_refdb_init_backend","git_refdb_new","git_refdb_open","git_refdb_set_backend"]],["reference",["git_reference__alloc","git_reference__alloc_symbolic","git_reference_cmp","git_reference_create","git_reference_create_matching","git_reference_delete","git_reference_dup","git_reference_dwim","git_reference_ensure_log","git_reference_foreach","git_reference_foreach_glob","git_reference_foreach_name","git_reference_free","git_reference_has_log","git_reference_is_branch","git_reference_is_note","git_reference_is_remote","git_reference_is_tag","git_reference_is_valid_name","git_reference_iterator_free","git_reference_iterator_glob_new","git_reference_iterator_new","git_reference_list","git_reference_lookup","git_reference_name","git_reference_name_to_id","git_reference_next","git_reference_next_name","git_reference_normalize_name","git_reference_owner","git_reference_peel","git_reference_remove","git_reference_rename","git_reference_resolve","git_reference_set_target","git_reference_shorthand","git_reference_symbolic_create","git_reference_symbolic_create_matching","git_reference_symbolic_set_target","git_reference_symbolic_target","git_reference_target","git_reference_target_peel","git_reference_type"]],["reflog",["git_reflog_append","git_reflog_delete","git_reflog_drop","git_reflog_entry_byindex","git_reflog_entry_committer","git_reflog_entry_id_new","git_reflog_entry_id_old","git_reflog_entry_message","git_reflog_entrycount","git_reflog_free","git_reflog_read","git_reflog_rename","git_reflog_write"]],["refspec",["git_refspec_direction","git_refspec_dst","git_refspec_dst_matches","git_refspec_force","git_refspec_rtransform","git_refspec_src","git_refspec_src_matches","git_refspec_string","git_refspec_transform"]],["remote",["git_remote_add_fetch","git_remote_add_push","git_remote_autotag","git_remote_connect","git_remote_connected","git_remote_create","git_remote_create_anonymous","git_remote_create_with_fetchspec","git_remote_default_branch","git_remote_delete","git_remote_disconnect","git_remote_download","git_remote_dup","git_remote_fetch","git_remote_free","git_remote_get_fetch_refspecs","git_remote_get_push_refspecs","git_remote_get_refspec","git_remote_init_callbacks","git_remote_is_valid_name","git_remote_list","git_remote_lookup","git_remote_ls","git_remote_name","git_remote_owner","git_remote_prune","git_remote_prune_refs","git_remote_push","git_remote_pushurl","git_remote_refspec_count","git_remote_rename","git_remote_set_autotag","git_remote_set_pushurl","git_remote_set_url","git_remote_stats","git_remote_stop","git_remote_update_tips","git_remote_upload","git_remote_url"]],["repository",["git_repository__cleanup","git_repository_config","git_repository_config_snapshot","git_repository_detach_head","git_repository_discover","git_repository_fetchhead_foreach","git_repository_free","git_repository_get_namespace","git_repository_hashfile","git_repository_head","git_repository_head_detached","git_repository_head_unborn","git_repository_ident","git_repository_index","git_repository_init","git_repository_init_ext","git_repository_init_init_options","git_repository_is_bare","git_repository_is_empty","git_repository_is_shallow","git_repository_mergehead_foreach","git_repository_message","git_repository_message_remove","git_repository_new","git_repository_odb","git_repository_open","git_repository_open_bare","git_repository_open_ext","git_repository_path","git_repository_refdb","git_repository_reinit_filesystem","git_repository_set_bare","git_repository_set_config","git_repository_set_head","git_repository_set_head_detached","git_repository_set_head_detached_from_annotated","git_repository_set_ident","git_repository_set_index","git_repository_set_namespace","git_repository_set_odb","git_repository_set_refdb","git_repository_set_workdir","git_repository_state","git_repository_state_cleanup","git_repository_workdir","git_repository_wrap_odb"]],["reset",["git_reset","git_reset_default","git_reset_from_annotated"]],["revert",["git_revert","git_revert_commit","git_revert_init_options"]],["revparse",["git_revparse","git_revparse_ext","git_revparse_single"]],["revwalk",["git_revwalk_add_hide_cb","git_revwalk_free","git_revwalk_hide","git_revwalk_hide_glob","git_revwalk_hide_head","git_revwalk_hide_ref","git_revwalk_new","git_revwalk_next","git_revwalk_push","git_revwalk_push_glob","git_revwalk_push_head","git_revwalk_push_range","git_revwalk_push_ref","git_revwalk_repository","git_revwalk_reset","git_revwalk_simplify_first_parent","git_revwalk_sorting"]],["signature",["git_signature_default","git_signature_dup","git_signature_free","git_signature_from_buffer","git_signature_new","git_signature_now"]],["smart",["git_smart_subtransport_git","git_smart_subtransport_http","git_smart_subtransport_ssh"]],["stash",["git_stash_apply","git_stash_apply_init_options","git_stash_drop","git_stash_foreach","git_stash_pop"]],["status",["git_status_byindex","git_status_file","git_status_foreach","git_status_foreach_ext","git_status_init_options","git_status_list_entrycount","git_status_list_free","git_status_list_get_perfdata","git_status_list_new","git_status_should_ignore"]],["strarray",["git_strarray_copy","git_strarray_free"]],["stream",["git_stream_register_tls"]],["submodule",["git_submodule_add_finalize","git_submodule_add_setup","git_submodule_add_to_index","git_submodule_branch","git_submodule_fetch_recurse_submodules","git_submodule_foreach","git_submodule_free","git_submodule_head_id","git_submodule_ignore","git_submodule_index_id","git_submodule_init","git_submodule_location","git_submodule_lookup","git_submodule_name","git_submodule_open","git_submodule_owner","git_submodule_path","git_submodule_reload","git_submodule_repo_init","git_submodule_resolve_url","git_submodule_set_branch","git_submodule_set_fetch_recurse_submodules","git_submodule_set_ignore","git_submodule_set_update","git_submodule_set_url","git_submodule_status","git_submodule_sync","git_submodule_update","git_submodule_update_init_options","git_submodule_update_strategy","git_submodule_url","git_submodule_wd_id"]],["tag",["git_tag_annotation_create","git_tag_create","git_tag_create_frombuffer","git_tag_create_lightweight","git_tag_delete","git_tag_dup","git_tag_foreach","git_tag_free","git_tag_id","git_tag_list","git_tag_list_match","git_tag_lookup","git_tag_lookup_prefix","git_tag_message","git_tag_name","git_tag_owner","git_tag_peel","git_tag_tagger","git_tag_target","git_tag_target_id","git_tag_target_type"]],["time",["git_time_monotonic"]],["trace",["git_trace_set"]],["transport",["git_transport_dummy","git_transport_init","git_transport_local","git_transport_new","git_transport_smart","git_transport_smart_certificate_check","git_transport_ssh_with_paths","git_transport_unregister"]],["tree",["git_tree_create_updated","git_tree_dup","git_tree_entry_byid","git_tree_entry_byindex","git_tree_entry_byname","git_tree_entry_bypath","git_tree_entry_cmp","git_tree_entry_dup","git_tree_entry_filemode","git_tree_entry_filemode_raw","git_tree_entry_free","git_tree_entry_id","git_tree_entry_name","git_tree_entry_to_object","git_tree_entry_type","git_tree_entrycount","git_tree_free","git_tree_id","git_tree_lookup","git_tree_lookup_prefix","git_tree_owner","git_tree_walk"]],["treebuilder",["git_treebuilder_clear","git_treebuilder_entrycount","git_treebuilder_filter","git_treebuilder_free","git_treebuilder_get","git_treebuilder_insert","git_treebuilder_new","git_treebuilder_remove","git_treebuilder_write"]]],"examples":[["add.c","ex/v0.25.1/add.html"],["blame.c","ex/v0.25.1/blame.html"],["cat-file.c","ex/v0.25.1/cat-file.html"],["common.c","ex/v0.25.1/common.html"],["describe.c","ex/v0.25.1/describe.html"],["diff.c","ex/v0.25.1/diff.html"],["for-each-ref.c","ex/v0.25.1/for-each-ref.html"],["general.c","ex/v0.25.1/general.html"],["init.c","ex/v0.25.1/init.html"],["log.c","ex/v0.25.1/log.html"],["network/clone.c","ex/v0.25.1/network/clone.html"],["network/common.c","ex/v0.25.1/network/common.html"],["network/fetch.c","ex/v0.25.1/network/fetch.html"],["network/git2.c","ex/v0.25.1/network/git2.html"],["network/index-pack.c","ex/v0.25.1/network/index-pack.html"],["network/ls-remote.c","ex/v0.25.1/network/ls-remote.html"],["remote.c","ex/v0.25.1/remote.html"],["rev-list.c","ex/v0.25.1/rev-list.html"],["rev-parse.c","ex/v0.25.1/rev-parse.html"],["showindex.c","ex/v0.25.1/showindex.html"],["status.c","ex/v0.25.1/status.html"],["tag.c","ex/v0.25.1/tag.html"]]}
\ No newline at end of file